服务器出现 server kernel: ip_conntrack: table full, dropping packet. 问题

简介:

 服务器出现 server kernel: ip_conntrack: table full, dropping packet. 问题

 
 
# cat /var/log/messages
...
Nov 8 08:54:58 server kernel: ip_conntrack: table full, dropping packet.
Nov 8 08:55:03 server kernel: printk: 49 messages suppressed.
Nov 8 08:55:03 server kernel: ip_conntrack: table full, dropping packet.
Nov 8 08:55:08 server kernel: printk: 49 messages suppressed.
...
 
当出现该问题的时候,TELNET连接80端口也连接不上,这样会导致新的外网请求不能进入;而如果使用keepalived来检测80端口存活的话,keepalived也会认为服务器down机。
 
 
越到这种问题,首先查看当前 ip_conntrack 记录,已经有 36271,超过了系统设置的 16640 :
$ head /proc/slabinfo
slabinfo - version: 2.1
# name 
: tunables
: slabdata 
ip_conntrack_expect 0 0 192 20 1 : tunables 120 60 8 : slabdata 0 0 0
ip_conntrack 36271 36216 384 10 1 : tunables 54 27 8 : slabdata 1612 1612 108
 
# cat /proc/sys/net/ipv4/ip_conntrack_max
16640
 
出现这种问题,是由于iptables增加了conntrack模块,用于检测tcp的连接状态
kernel 用 ip_conntrack 模块来记录 iptables 网络包的状态,并保存到 table 里(这个 table 在内存里),如果网络状况繁忙,比如高连接,高并发连接等会导致逐步占用这个 table 可用空间,
一般这个 table 很大不容易占满并且可以自己清理,table 的记录会一直呆在 table 里占用空间直到源 IP 发一个 RST 包,
但是如果出现被攻击、错误的网络配置、有问题的路由/路由器、有问题的网卡等情况的时候,就会导致源 IP 发的这个 RST 包收不到,这样就积累在 table 里,越积累越多直到占满,
满了以后 iptables 就会丢包,出现外部无法连接服务器的情况。
 
知道问题就好办了,要么增加 table 容量以便能记录更多的连接信息(会消耗一点内存),要么就卸载 ip_conntrack 模块。
 
查看当前 ip_conntrack_max 设置,然后增加16倍到 1048576:
net.ipv4.ip_conntrack_max = 1048576
net.ipv4.netfilter.ip_conntrack_max = 1048576
 
还有一个参数 ip_conntrack_tcp_timeout_established 需要注意,默认情况下 timeout 是5天(432000秒),需要降低:
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 60
 
综合一下,最好把这些内核参数加到 sysctl.conf 文件以便系统启动后自动读取中:
sysctl -p
 
还有一种办法就是直接卸载 ip_conntrack 模块,这个办法最简单,到在 /etc/sysconfig/iptables-config 文件里删除或者注释掉 ip_conntrack_netbios_ns 后重启系统:
# vi /etc/sysconfig/iptables-config
#IPTABLES_MODULES="ip_conntrack_netbios_ns"
 
# shutdown -r now
本文出自 “麦麦的运维之路” 博客,请务必保留此出处http://xiaomaimai.blog.51cto.com/1182965/833181









本文转自 紫色葡萄 51CTO博客,原文链接:http://blog.51cto.com/purplegrape/1068199,如需转载请自行联系原作者
目录
相关文章
|
1月前
|
网络协议 Ubuntu Linux
gpg从公钥服务器接收失败(gpg: keyserver receive failed: Server indicated a failure)
通过上述步骤,大多数情况下应该能够解决GPG从公钥服务器接收失败的问题。如果问题依旧存在,可能需要进一步调查与公钥服务器相关的更深层次的技术问题,或者考虑在相关社区论坛寻求帮助。
196 1
|
1月前
|
网络协议 Windows
Windows Server 2019 DHCP服务器搭建
Windows Server 2019 DHCP服务器搭建
|
1月前
|
网络协议 定位技术 Windows
Windows Server 2019 DNS服务器搭建
Windows Server 2019 DNS服务器搭建
|
1月前
|
网络协议 文件存储 Windows
Windows Server 2019 FTP服务器搭建
Windows Server 2019 FTP服务器搭建
|
1月前
|
网络协议 Windows
Windows Server 2019 Web服务器搭建
Windows Server 2019 Web服务器搭建
|
4月前
|
弹性计算 持续交付 Docker
阿里云云效产品使用合集之如何部署到阿里云服务器上的 Windows Server 上的 IIS
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
4月前
|
网络协议 Unix 网络安全
FTP服务器怎么搭建?Windows server搭建FPT服务器
FTP服务器是按照FTP协议提供文件传输服务的计算机。它用于在两台计算机间安全地传输文件,支持用户权限管理和跨平台操作。FTP使用控制连接处理命令,数据连接传输文件,有PORT和PASV模式。要搭建FTP服务器,首先在Windows Server 2008 R2上安装IIS,确保选中FTP服务。接着,创建FTP文件夹作为站点根目录,通过IIS管理器添加FTP站点,配置站点信息、身份验证和权限。测试客户端通过telnet和浏览器访问FTP服务器,确认能成功登录及浏览文件。FTP常用于文件共享和管理,可通过专用工具如FlashFXP上传下载文件。
166 0
FTP服务器怎么搭建?Windows server搭建FPT服务器
|
5月前
|
监控 Linux BI
【linux服务器系统盘爆满】/www/server/total/logs/目录内容过多导致服务器系统盘爆满,/www/server/total/logs/ 里是什么内容?是否可以删除?
【linux服务器系统盘爆满】/www/server/total/logs/目录内容过多导致服务器系统盘爆满,/www/server/total/logs/ 里是什么内容?是否可以删除?
102 1
|
4月前
|
关系型数据库 MySQL Java
软件开发2003 -Can·t to MySQL server on ‘xxxxxx‘(10038),宝塔初始化安装mysql,远程链接MySql注意事项,开始时服务器是没有放开端口的,宝塔也都开
软件开发2003 -Can·t to MySQL server on ‘xxxxxx‘(10038),宝塔初始化安装mysql,远程链接MySql注意事项,开始时服务器是没有放开端口的,宝塔也都开
|
5月前
|
分布式计算 DataWorks 大数据
MaxCompute操作报错合集之服务器迁移时,出现"The specified project or table name is not valid or missing"的错误,该怎么解决
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
下一篇
无影云桌面