Toggle navigation
Photo Blog
首页
Blog
关于
作品
联系
Home
About
Contact
Sign in
iptable配置导致服务器丢包严重的问题
Posted by
Chris Chen
on January 10, 2017
> 发现服务器网络慢,各种丢包问题严重,经过一系列尝试,最后发现是iptable的Nf_conntrack: Table Full问题 最近服务器上网络连接非常慢,从页面访问速度,cgi速度到数据库连接,无论是入站数据和出站数据,都不正常。然后看是查找问题的原因 一开始以为是客户端连接没有及时释放,同时连接数太多导致资源不够用。因为机器本身内存也很小,基本上当时内存也已经占满了,于是改了apache的服务器超时时间 ``` Timeout 30 MaxKeepAliveRequests 500 KeepAliveTimeout 2 ``` 甚至一度关掉了KeepAlive,但是同时连接数还是一直没有下来。 然后怀疑是python cgi的问题,因为没有用fastcgi,wsgi这类的mod,所以每次cgi执行都需要重新加载。于是把cgi用golang重写了一遍,因为它编出来的是二进制的。果然有一些效果,同时连接数一下子就下来了。但是cgi还是经常会连接超时。 因为这个cgi的内部有网页下载和数据库连接,再检查机器本身的下载速度个数据库连接也是很慢,甚至dns服务器也经常连不上。一开始以为是dns服务器的问题,于是改了机器的dns,依然是效果不佳。 今天在网上搜索,偶然发现有人有相同的情况,用dmesg这个命令看到类似这样的日志 ``` [5854719.582506] nf_conntrack: table full, dropping packet ``` 是因为iptable开启了conntrack,但是连接跟踪表满,于是开始丢包。而这个是在开了nat table之后默认开启的。于是在80端口上限制这个追踪 ``` iptables -t raw -A PREROUTING -i lo -j NOTRACK iptables -t raw -A OUTPUT -o lo -j NOTRACK ``` ``` iptables -t raw -A PREROUTING -p tcp -m tcp --dport 8080 -j NOTRACK iptables -t raw -A OUTPUT -p tcp -m tcp --sport 8080 -j NOTRACK ``` 重新检查,终于一切都好了 参考页面: [http://jerrypeng.me/2014/12/08/dreadful-nf-conntrack-table-full-issue/](http://jerrypeng.me/2014/12/08/dreadful-nf-conntrack-table-full-issue/)
0
Comments
Add Comment
Log in
Nick Name
Comment:
Add Comment Log in