问题描述
Nginx的日志出现大量的upstream time out, dmesg 和 /var/log/messages查看系统日志后,发现很多的错误日志:ip_conntrack: table full, dropping packet
问题原因
nf_conntrack工作在3层,查看当前连接数的命令如下:
nf_conntrack 跟 nat 有关,用来跟踪连接条目,它会使用一个哈希表来记录 established 的记录。nf_conntrack 在 2.6.15 被引入,如果该哈希表满了,就会出现:
nf_conntrack: table full, dropping packet
也就是说,这个问题是连接数过多引起的。
问题解决
从问题原因我们可以知道是因为连接数过多,nf_conntrack的哈希表满了引起的。
那么,比较简单的解决思路就是增大nf_conntrack_max数值。
将以下内容加入到/etc/sysctl.conf 中
Centos 6 :
1
2
3
|
net.nf_conntrack_max = 655360 net.netfilter.nf_conntrack_max = 655350 net.netfilter.nf_conntrack_tcp_timeout_established = 1200 |
Centos 5
1
2
|
net.ipv4.netfilter.ip_conntrack_max = 1655350 net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 1200 |
运行命令: sysctl -p /etc/sysctl.conf
如果出现以下错误:
运行命令: modprobe nf_conntrack_ipv4
modprobe xt_state
modprobe nf_conntrack
备注优化:
modprobe nfnetlink_queue
modprobe nfnetlink_log
modprobe nfnetlink
再次运行: sysctl -p /etc/sysctl.conf
通过命令:sysctl -a | grep nf_conntrack 可以查看相关参数的数值。
注: 这里我还加了一行设置:net.ipv4.tcp_max_tw_buckets = 262144 用于解决TCP: time wait bucket table overflow问题,占用大量端口号,使得新连接无法绑定端口。
参考文档:
http://www.cnblogs.com/higkoo/articles/iptables_tunning_for_conntrack.html
http://www.d-kai.me/nf_conntrack-table-full-dropping-packet%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95/
http://www.php-oa.com/2012/06/07/nginx-502-upstream-timed-out-110-connection-timed-out.html
相关推荐
NULL 博文链接:https://bert82503.iteye.com/blog/2147899
服务器中的错误记录类似于这种: 124.65.133.242 – – [27/Oct/2014:14:30:51 +0800] “-” 400 0 “-” “-” 124.65.133.242 – – [27/Oct/2014:14:31:45 +0800] “-” 400 0 “-” “-” 124.65.133.242 – – ...
Nginx 502错误情况1: 网站的访问量大,而php-cgi的进程数偏少。 针对这种情况的502错误,只需增加php-cgi的进程数。具体就是修改/usr/local/php/etc/php-fpm.conf 文件,将其中的max_children值适当增加。这个...
主要介绍了nginx加php-fpm环境中出现502 bad gateway错误的5种解决方法,总结归纳服务器出现502错误的原因多数为连接过多和脚本超时,本文总结了5种解决方法,需要的朋友可以参考下
nginx+php-fpm解决502 Bad Gateway.zip
一些运行在Nginx上的网站有时候会出现“502 Bad Gateway”错误,有些时候甚至频繁的出现。以下是小编搜集整理的一些Nginx 502错误的排查方法,供参考: Nginx 502错误的原因比较多,是因为在代理模式下后端服务器...
nginx 限制ip、并发量、连接数等配置
Nginx常见的错误和解决方法,1、Nginx 常见启动错误 有的时候初次安装nginx的时候会报这样的错误 sbin/nginx -c conf/nginx.conf 报错内容:sbin/nginx: error while loading shared libraries: libpcre.so.1: ...
lnmp架构在处理php时,nginx直接调取后端的php-fpm服务,如果nginx的请求量偏高,我们又没有给php-fpm配置足够的子进程,那么php-fpm就会资源耗尽,一旦资源耗尽nginx找不到php-fpm就会出现502错误, 解决方案 去...
最近碰到一个问题就是nginx转发到另一个nginx使用域名不通报502,通过nginx的日志发现如下 10.220.53.117 – – [18/Feb/2020:10:26:07 +0800] “POST /test/v1/api/f1 HTTP/1.1” 502 173 “-” “okhttp/3.11.0”...
php+mysql+nginx安装与常遇到的错误 centos系统为例子 在高并发连接的情况下,Nginx是Apache服务器不错的替代品。Nginx同时也可以作为7层负载均衡服务器来使用。根据我的测试结果,Nginx 0.8.15 + PHP 5.2.10 ...
使用nginx时,想要做到长连接,我们必须做到以下两点: 从client到nginx是长连接 从nginx到server是长连接 对于客户端而言,nginx其实扮演着server的角色,反之,之于server,nginx就是一个client
Nginx常见故障Nginx 502 Bad Gateway解决方案汇总,主要针对phpWeb服务器,有需要的朋友可以下载收藏
nginx+lua+redis 集群 连接插件和脚本,原来插件是没有密码功能 故 修改了一下 k可以自己下载使用
如果后端的服务器(源站或是缓存服务器)处理并发连接能力不强的话,就可能导致瓶颈的出现。 Nginx目前的upstream连接建立和获取的机制如下图。Nginx会在一开始创建connection pool(进程间不共享,可以避免锁),...
主要介绍了将PHP从5.3.28升级到5.3.29时Nginx出现502错误,需要的朋友可以参考下
为Nginx自定义404,502错误页面的方法,需要的朋友可以参考下。