nginx端口监听队列长度

问题描述:
最近nginx代理服务器在业务繁忙时段,会频繁出现响应超时 甚至 无法建立链接的情况。 导致lvs 频繁的将real server踢掉。

分析:
1、lvs 问题, 在连接real server时会出现丢包。
2、nginx 所在机器的问题,机器为虚拟机, 网卡对数据包接收的支持。
3、nginx 机器上系统内核参数设置问题。
4、nginx 的配置。
5、后台服务器的问题。

问题排查:
1、nginx 所监听的端口为80 端口,在nginx 的配置新加端口 81。 发现在业务繁忙时, 80端口出现服务问题, 81 端口正常。
由此推断,机器网卡没有问题,若网卡问题,则丢包不会只针对80端口。nginx的处理能力没有问题,不是nginx不能处理更多的请求。80 、81 端口的区别就是请求的量的差异。
2、nginx 每秒的请求约为1000,不过系统能及时处理。
3、网卡接收数据包 5000pps。
4、查看连接状态,发现 SYN_RECV 状态的较多,约500。
5、通过tcpdump 抓包发现,部分80端口的tcp请求没有建立成功。在收到client发送的 SYN 包后,服务器没有响应。
综合以上,确定是同时到达80端口的tcp 建立链接的请求过多, 服务器没有及时响应。

问题处理:
1、对于服务器不能及时处理建立链接的请求,可能是系统中队列设置过小。
/proc/sys/net/ipv4/tcp_max_syn_backlog  中的值已经修改, 这个不是系统的瓶颈。
2、nginx监听80端口限制。
经查阅,发现nginx的listen 命令有参数backlog 用来指定队列大小。 而nginx 默认的值为511, 这就验证了SYN_RECV状态到500左右就会出现问题了。

修改nginx 配置, 将backlog 参数改大, 重启nginx 。 一切正常。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值