现象描述
- nginx日志upstream_response_time显示超时(某个请求)
- 通过过观察业务TImeUseDetail(Flume-Kafka-Storm-ES-Kibana日志解析收集)查询该请求未超时
- 定位耗时在nginx-服务器,查看nginx日志发现error一直报timeout
- 去服务器看系统日志/var/log/message
kernel: nf_conntrack: table full, dropping packet.
kernel: nf_conntrack: table full, dropping packet.
kernel: nf_conntrack: table full, dropping packet.
kernel: nf_conntrack: table full, dropping packet.
kernel: nf_conntrack: table full, dropping packet.
kernel: nf_conntrack: table full, dropping packet.
kernel: nf_conntrack: table full, dropping packet.
kernel: nf_conntrack: table full, dropping packet.
kernel: nf_conntrack: table full, dropping packet.
kernel: nf_conntrack: table full, dropping packet.
nf_conntrack 跟踪链接状态的哈希表已满,开始丢包
网上搜索相关资料,一大堆。
本次案例解决方法:将防火墙关闭,不让nf_conntrack记录用户链接状态
如果不能关闭防火墙的伙伴:请参考其他解决办法,如:
1 加大防火墙跟踪表的大小,优化对应的系统参数
2 添加“不跟踪”标识,修改 /etc/sysconfig/iptables
防火墙打开后,nf_conntrack出现在/proc/net目录下面
注:nf_conntrack为防火墙记录用户连接的状态连接表