迁移big Traffic pool tcp 连接问题

一个具体的case 就是 当我们迁移 一个超大流量的pool writer, 架构从 consumer -HLB -> writer 到consumer -> SLB->writer.

  • consumer 是event 收集系统, 调用下游到writer 来存储数据。
  • writer 是event 存储 数据。

在不同的数据中心,有三对consumer /writer ,因此我们需要迁移三次才能够完成。每一对上下游的流量都非常大,第一对的流量想对小, consumer 的流量是10B/day, 也就意味writer 也是10B/day。 其他的两对其他的都达到20B/day

由于流量过大,导致在迁移过程中遇到了很多网络问题。
由于下游有420 个机器,我们觉得在流量迁移过程中。由于有latency 的出现,我们需要下游有更大的容量。根据以往的经验,加到了一倍。

Pool 1.
流量先从小的开始迁移。我们先迁移第一对。在迁移过程中,上游出现了大量的 error, 这个错误是明显的端口全部被用我的情况。

ConnectException: Cannot assign requested address (connect failed)&st=java.net.ConnectException: Cannot assign requested address (connect failed)\n\tat java.net.PlainSocketImpl.socketConnect(Native Method)\n\tat

我们看了一下用户的配置,他的jvm 参数disable 了keepAlive,-Dhttp.keepAlive=false
当时我们觉得不应该disable keepAlive 的参数,联系用户改正。但是用户的反馈说,keepAlive disable 是特意这么设定。以前是打开的,但是打开之后上游consumer 会出现 event lag 的情况。

image.png

也就是如果keepAlive ,会导致event 不出去。 这种情况下,我们分析,是下游的writer 现有的pool 容量不够,在keepAlive 的情况下,没有这么大的数据处理能力。如果disable 了keepAlive,那么由于每次都要新建立链接,consumer 的发送的速度放缓,下游现有的容量就能够支持了。

那么方案有两个

  • 是增加现有的下游容量,enable keepAlive
  • 由于迁移流量的新pool 上已经提供了足够的容量能力,可以用动现有的下游和保持keepAlive=false。增加consumer 的port。

从迁移的角度说增加port 方案更加合理,再加上新的pool 是k8云原生的,可以通过调整k8s secure context 来实现, k8s config

image.png

改动之后。这次迁移就很平稳,顺利成功。


image.png

Pool 2:
在pool1 点迁移成功后,我们觉得迁移第二个pool 很有信心。 在和用户商量增了consumer 2 的port range 之后开始了,迁移。不幸的是,这次还是出现了ConnectException: Cannot assign requested address 之类的错误。 这说明增加了port 有时候不够用。最严重的是,再迁移完成后,出现了明显的event 积压现象,而且event 积压一直在增长,完全下降不下来。奇怪的是,当然我们rollback 回原来的pool 上的时候,event 积压很快就消失了。

在这个情况下我们就很奇怪,新pool 的指标上来看,容量比以前大一倍,进来request 处理速度也和以前差不多。 cpu / memory 使用情况其实是比以前有好转的。从上游consumer 的情况看,也没有明显的error, 从cpu 和memory 情况看,也没有明显的增加。 那么为什么会增加这么多

从tcp 抓包情况看,有很多connection error


image.png

在所有的AZ 的都出现了tcp 包重传的情况。

image.png

在tcp 抓包过程中,可以看到 大概有20k TIME_WAIT connections ,但是流量回到老pool ,只有很少的TIME_WAIT connection。 这就解释了为什么回到老pool 就没有event 堆积的情况。

**Let’s see the packet capture for HLB and SLB.

SLB:

packet #26 client send http request with “Connection: close”

packet #37 server sent http response with “Connection: close”

packet #39 client sent TCP FIN to close the connection.

packet #40 server sent TCP FIN. Then client’s TCP state will enter TIME_WAIT.


image.png

HLB:

packet #11 client sent http request with “Connection: close”

packet #108 send sent http response with “Connection: close”. At the same time, this packet closes the TCP connection by setting the TCP FIN flag.


image.png

由于client 端disable keepAlive, 因此对每个request 都会发出“Connection: close”。针对“Connection: close”,slb 和hlb 行为是不同的。slb 是由不会主动结束链接,需要client 端主动结束。 由于tcp 四次握手,client 端要等到2msl TIME_WAIT。 而HLB 会主动结束链接,HLB来等待2 msl TIME_WAIT。 这也就解释了为什么回到hlb ,connection error 就很少的原因。

在pool 2 的情况下,增加port 看来也不能解决过大流量的问题。 因此就需要client 端enable keepAlive,来减少新链接的产生。同时增加下游的容量。

在改动后。 流量迁移成功


image.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,372评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,368评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,415评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,157评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,171评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,125评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,028评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,887评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,310评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,533评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,690评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,411评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,004评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,812评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,693评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,577评论 2 353

推荐阅读更多精彩内容