记一次Nginx记录响应超时,业务不超时问题解决过程

现象描述

  1. nginx日志upstream_response_time显示超时(某个请求)
  2. 通过过观察业务TImeUseDetail(Flume-Kafka-Storm-ES-Kibana日志解析收集)查询该请求未超时
  3. 定位耗时在nginx-服务器,查看nginx日志发现error一直报timeout
  4. 去服务器看系统日志/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为防火墙记录用户连接的状态连接表

你可能感兴趣的:(nginx,linux)