前提:公司有两台转发服务器,一台 nginx ,一个 IIS 服务,有一个用户信息图片上传接口,已经稳定运行 2 年。 现在有一个用户上传的报文,发到哪个服务器上,哪个服务器就会断连大概 3-5 分钟左右。 报文格式就是 JSON 加 base64 ,因为图片涉及用户身份证信息没法发。 服务器端没有错误日志。 抓包的看了下,上面是正常 tcp 分片的报文,下面突然是客户端突然没应答了?但是服务端已经收不了请求了。 请求第一次响应 read ECONNRESET 然后再请求响应啥都是 connect ECONNREFUSED 整崩溃了。 [Imgur]( ) 报文, 服务器, 请求, 上传
对了,nginx 会报这个,[info] 407539#0: *6273 recv() failed (104: Connection reset by peer), client: 客户端地址, server: localhost, request: "POST /hk/bms-front/agentMerchantUploadImage HTTP/1.1", host: "服务端地址"
@dust0522 #3 上游服务器/应用的问题。 一般有以下情况问题: 应用 tcp 队列满了,未及时释放。 应用 tcp 缓冲区满了,未及时释放。 系统 tcp 队列满了,未及时释放。 系统 tcp 缓冲区满了,未及时释放。 调优相关参数。 一个一个测试。 这种问题,除非把网络 debug 日志开启来查询,在应用层是看不出具体问题。 ------- 前段时间处理过 服务器间歇性无法连接( rst )。 最终定位就是 linux tcp 队列满了未及时释放导致的。