-
我的服务要高频调用一个 HTTPS 接口每次请求都老老实实新建一个连接发完就关、功能没问题可延迟一直降不下来 CPU 还莫名其妙偏高,抓包一看才发现每一次请求前都在完整地做一遍 TLS 握手——多轮往返加上一堆非对称加密运算,这笔昂贵的建立成本被我每个请求都重新付了一遍的深度复盘
我有个服务需要高频调用一个第三方 HTTPS 接口,客户端代码写得很朴素:每次要调用就新建一个 HTTPS 连接发请求拿响应关掉连接。功能完全正常但性能不对劲:单次延迟明显比纯网络往返加服务端处理该有的时间长出一截而且这一截稳定存在优化业务逻辑怎么都压不下去;CPU 莫名偏高调用量一大就明显升高和它就是个调接口的定位不符;低频还好一到高频延迟和 CPU 成倍放大;抓包发现每一次请求之前都有一整套 …- 0
- 0
-
我的服务传输大量数据,带宽明明很充足、网络也不差,可吞吐量就是上不去、尤其每次新建连接的前期慢得明显,排查半天才发现 TCP 有个慢启动机制、新连接的发送窗口是从很小一点点试探着爬上来的深度复盘
我有个服务要在节点间传输大量数据,观察到怪现象:带宽明明充足、延迟也不高,可实际吞吐就是上不去、达不到带宽理论值,尤其每次新建连接前期都慢得肉眼可见、过一会儿才提上速,而我的模式恰恰是频繁建新连接传一小批就关,于是每条连接几乎都在慢吞吞的前期就结束了。我以为是带宽不够、对端慢、缓冲小,排查都不对。直到抓包盯着一条新连接的发送速率曲线:刚建立时速率非常低、然后指数往上爬、爬好一阵才接近带宽上限。查 …- 0
- 0
-
调用下游服务的接口慢得离谱、机器上还堆了几万个 TIME_WAIT,我抓包才发现每发一个请求都在重新三次握手加 TLS 握手:一次 HTTP 连接没复用、每次新建连接把建连开销付了无数遍的深度复盘
我写了个服务频繁调用下游 HTTP 接口,压测时 QPS 怎么也上不去、延迟还高,机器上 netstat 里密密麻麻几万个 TIME_WAIT。一开始以为下游慢,抓包才发现:我每发一个 HTTP 请求都在新建一个全新 TCP 连接——请求前三次握手+TLS 握手,请求后立刻关闭,大部分时间耗在建连和关连上、真正传输反而很少;而主动关闭的连接大量堆在 TIME_WAIT 耗端口。根因是每次请求 ne…- 2
- 0
-
我的服务高峰期突然报 Cannot assign requested address,明明机器很闲、连接也没泄漏,我对着几万个 TIME_WAIT 排查了大半天的复盘
那天高峰期,我们一个对外服务突然大面积报 connect: cannot assign requested address(errno 99),最迷惑的是机器 CPU、内存全闲着,连接池也没泄漏,可就是建立不了新连接。我从应用层一路查到内核 TCP 状态,直到 netstat 里看到密密麻麻几万个 TIME_WAIT 才恍然大悟:我们这服务作为客户端高并发地用短连接调下游,每次用完主动关闭就进入 …- 0
- 0
-
TCP 连接的生与死:从一次端口耗尽彻底搞懂 TIME_WAIT
一个调用量很大的网关服务某天开始零星报 connect: cannot assign requested address,下游好好的,网络也通,ss -s 一看竟有六万多个 TIME_WAIT 把本地端口占了个精光。很多人第一反应是把 TIME_WAIT 当 bug 干掉,我差点就去开那个臭名昭著的 tcp_tw_recycle。这篇从端口耗尽讲起,把 TCP 连接怎么生(三次握手为什么是三次)、…- 0
- 0
连接复用
幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分
我的优惠劵
-
¥优惠劵使用时效:无法使用使用时效:
之前
使用时效:永久有效优惠劵ID:×
没有优惠劵可用!





