真没见过这种问题,求帮助

查看 113|回复 7
作者:dust0522   
前提:公司有两台转发服务器,一台 nginx ,一个 IIS 服务,有一个用户信息图片上传接口,已经稳定运行 2 年。
现在有一个用户上传的报文,发到哪个服务器上,哪个服务器就会断连大概 3-5 分钟左右。
报文格式就是 JSON 加 base64 ,因为图片涉及用户身份证信息没法发。
服务器端没有错误日志。
抓包的看了下,上面是正常 tcp 分片的报文,下面突然是客户端突然没应答了?但是服务端已经收不了请求了。
请求第一次响应 read ECONNRESET 然后再请求响应啥都是 connect ECONNREFUSED
整崩溃了。
[Imgur](

)

报文, 服务器, 请求, 上传

dust0522
OP
  
报文也不大就 214KB
leaves615   
模拟测试下的 json 不同包大小,找临界点。有可能是网络 cache 或者什么参数超出。导致无法处理请求。
dust0522
OP
  
对了,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
OP
  
@leaves615 我试试,找不到有用的日志,很头疼
wuruorocks   
也许服务程序有 bug ,处理这种请求时挂掉了? 能复现就还好办
dust0522
OP
  
跳过转发服务器,直接请求程序是没问题的,现在在测试上还复现不了,还在搭环境
leaves615   
@dust0522 #3
上游服务器/应用的问题。 一般有以下情况问题:
应用 tcp 队列满了,未及时释放。
应用 tcp 缓冲区满了,未及时释放。
系统 tcp 队列满了,未及时释放。
系统 tcp 缓冲区满了,未及时释放。
调优相关参数。 一个一个测试。 这种问题,除非把网络 debug 日志开启来查询,在应用层是看不出具体问题。
-------
前段时间处理过 服务器间歇性无法连接( rst )。 最终定位就是 linux tcp 队列满了未及时释放导致的。
您需要登录后才可以回帖 登录 | 立即注册

返回顶部