menu LittleJake's Blog
color_lens
avatar
Jake Liu
Never Settle
creative commons by-nc-sa
hit
Category
keyboard_arrow_down

© 2024 LittleJake's Blog.

萌ICP备20223020号

线上业务高并发出现大量CLOSE_WAIT、LAST_ACK连接以及僵尸ESTABLISHED连接

故障现象

其他业务访问分布式文件系统,出现卡顿的现象,具体现象为建立连接后卡在请求但无响应的情况,同时服务端无访问客户端的ESTABLISHED的连接。

业务使用程序

客户端:Java HTTPClient
服务端:分布式文件系统

简单分析

由于是纯内网环境,基本排除了丢包的可能。

服务端承受不了客户端高并发访问,同时客户端超时时间不合理断开连接,导致客户端主动断开连接而未发送ACK到服务端,导致服务端大量CLOSE_WAIT,产生DOS效果。

关闭客户端业务或者重启服务端程序,其他业务会恢复正常运行。

优化处理

在设置内核参数tcp_orphan_retries为5后,服务端不出现CLOSE_WAIT和LAST_ACK现象,但客户端会出现大量CLOSE_WAIT。即使设置了Read Time和请求的超时时间,业务卡在请求处不会超时,客户端连接为ESTABLISHED,但服务端没有发现该端口的连接这种奇怪现象。

其他业务访问分布式文件系统进行GET和PUT请求未出现CLOSE_WAIT的情况,但是会影响到GET的性能出现卡请求的情况。

结论

初步认定为Java HttpClient代码中调用有BUG未关闭连接或者是分布式文件系统程序BUG,具体问题需要后续继续跟进。

Buy me a beer
Jake Liu
Never Settle

Title: 线上业务高并发出现大量CLOSE_WAIT、LAST_ACK连接以及僵尸ESTABLISHED连接

Author: Jake Liu

Origin:

Creative Commons License

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) For any re-post you must give appropriate credit.

文章遵循CC许可 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 转载请注明出处

Tag:高并发, java, CLOSE_WAIT, ESTABLISHED, LAST_ACK, 分布式文件系统

评论区

Add a new comment.

Theme