Linux NAT哈希表满导致服务器丢包

发现ECS Linux服务器出现间歇性丢包的情况,通过tracert、mtr等手段排查,外部网络未见异常。

同时,如下图所示,在系统日志中重复出现大量如下错误信息:

Jun 13 15:20:23 web3 kernel: nf_conntrack: table full, dropping packet.
Jun 13 15:20:24 web3 kernel: nf_conntrack: table full, dropping packet.
Jun 13 15:20:24 web3 kernel: nf_conntrack: table full, dropping packet.
Jun 13 15:20:25 web3 kernel: nf_conntrack: table full, dropping packet.
Jun 13 15:20:25 web3 kernel: nf_conntrack: table full, dropping packet.
Jun 13 15:20:25 web3 kernel: nf_conntrack: table full, dropping packet.
Jun 13 15:20:25 web3 kernel: nf_conntrack: table full, dropping packet.
Jun 13 15:20:25 web3 kernel: nf_conntrack: table full, dropping packet.
Jun 13 15:20:25 web3 kernel: nf_conntrack: table full, dropping packet.
Jun 13 15:20:25 web3 kernel: nf_conntrack: table full, dropping packet.

ip_conntrack是Linux系统内NAT的一个跟踪连接条目的模块。ip_conntrack模块会使用一个哈希表记录 tcp 通讯协议的 established connection记录,当这个哈希表满了的时候,便会导致nf_conntrack: table full, dropping packet错误。

在Centos 5.x上是如下的设置:

用户可以尝试通过修改如下内核参数来调整ip_conntrack限制。操作方式简述如下:

1. 在终端下输入如下指令编辑系统内核配置:

# vi /etc/sysctl.conf

2. 设置或修改如下参数:

#哈希表项最大值

net.ipv4.netfilter.ip_conntrack_max = 655350

#超时时间,默认情况下 timeout 是5天(432000秒)

net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 1200

3. 在终端下输入如下指令使上述配置生效:

#sysctl -p

在Centos 6.x上是上是如下的设置:

1. 在终端下输入如下指令编辑系统内核配置:

# vi /etc/sysctl.conf

2. 设置或修改如下参数:

#哈希表项最大值

net.netfilter.nf_conntrack_max = 655350

#超时时间,默认情况下 timeout 是5天(432000秒)

net.netfilter.nf_conntrack_tcp_timeout_established = 1200

3. 在终端下输入如下指令使上述配置生效:

时间: 2024-10-26 07:07:38

Linux NAT哈希表满导致服务器丢包的相关文章

关于ip_conntrack跟踪连接满导致网络丢包问题的分析

我们的线上web服务器在访问量很大时,就会出现网络连接丢包的问题,通过dmesg命令查看日志,发现如下信息: kernel: ip_conntrack: table full, dropping packet. kernel: printk: 1 messages suppressed. kernel: ip_conntrack: table full, dropping packet. kernel: printk: 2 messages suppressed. kernel: ip_conn

Linux内核哈希表分析与应用

目录(?)[+] Author:tiger-johnTime:2012-12-20mail:[email protected]Blog:http://blog.csdn.NET/tigerjb/article/details/8450995 转载请注明出处. 前言: 1.基本概念: 散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构.也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度.这个映射函数叫做散列函数,存放记录的

Linux服务器丢包故障的解决思路及引申的TCP/IP协议栈理论

我们使用Linux作为服务器操作系统时,为了达到高并发处理能力,充分利用机器性能,经常会进行一些内核参数的调整优化,但不合理的调整常常也会引起意想不到的其他问题,本文就一次Linux服务器丢包故障的处理过程,结合Linux内核参数说明和TCP/IP协议栈相关的理论,介绍一些常见的丢包故障定位方法和解决思路. 问题现象 本次故障的反馈现象是:从办公网访问公网服务器不稳定,服务器某些端口访问经常超时,但Ping测试显示客户端与服务器的链路始终是稳定低延迟的. 通过在服务器端抓包,发现还有几个特点:

[转]nf_conntrack: table full, dropping packet 连接跟踪表已满,开始丢包 的解决办法

nf_conntrack: table full, dropping packet  连接跟踪表已满,开始丢包 的解决办法 中午业务说机器不能登录,我通过USM管理界面登录单板的时候发现机器没有僵死,然后一看日志,g一下子就明白了 tail -2000 /var/log/messages Apr 10 12:48:35 bj-push-pushserver83 kernel: [95129.138804] __ratelimit: 16523 callbacks suppressed (“连接跟

客户端本地到服务器丢包的检查方法

如果用户本地到服务器出现ping丢包或直接无法连接的时候,可以通过如下步骤进行排查分析:   客户端本地到服务器丢包的检查方法 1. ping服务器IP地址或域名,查看丢包情况:     ping 140.205.140.234 -n 100  说明: -n 后面的数字表示要进行的ping测试次数: 主要关注如下下图所示所统计的丢包率和平均超时时间: 2. 使用MTR工具跟踪下到服务器的链路情况: Windows下,使用所示的WinMTR工具进行跟踪测试: 用法:打开软件后,在[hosts]框中

sendto频率过快导致发送丢包

编写一个转发模块,虽然没有要求一转多时要达到多少路(不采用组播的情况下,单纯的一路转成多路),但是本着物尽其用的原则,尽可能测试一下极限. 网络环境:1000M,直连,多网卡 系统:Linux version 3.19.0 接收模式:udp模式的raw socket(优化的话,可以直接通过网卡处理) 发送模式:udp模式的raw socket(优化的话,可以直接通过网卡处理),单线程/多线程 2M               1转N 设备A   ---------------->   转发设备 

Linux内核哈希表中的bucket桶

哈希表 哈希表(Hashtable)又称为“散列”,Hashtable是会根据索引键的哈希程序代码组织成的索引键(Key)和值(Value)配对的集合.Hashtable 对象是由包含集合中元素的哈希桶(Bucket)所组成的.而Bucket是Hashtable内元素的虚拟子群组,可以让大部分集合中的搜寻和获取工作更容易.更快速. 哈希函数(Hash Function)为根据索引键来返回数值哈希程序代码的算法.索引键(Key)是被存储对象的某些属性值(Value).当对象加入至 Hashtabl

一次由于网卡流量跑满引起的服务器丢包总结

最近收到线上一台DB服务器ping丢包,丢包率一直在30%左右.通过Zabbix监控查看了服务器CPU,内存都很正常,网卡流量也不高,基本在100M左右. 首先确认一下服务器硬件是否正常,由于没有收到硬件报警.登录服务器通过HP管理工具在此确认了硬件信息都正常(硬盘,缓存卡,内存等).  第二步在排查一下系统问题,通过top,ps等命令也没有发现什么异常,基本上排除系统问题.  第三步查看了一下该服务器上联监控机端口流量,也都很正常,由于收到只有这一台服务器报警,也排除了上联交换机故障问题. 

Linux索引节点(inode)用满导致的一次故障

一.发现问题: 在一台配置较低的Linux服务器(内存.硬盘比较小)的/data分区内创建文件时,系统提示磁盘空间不足,用df -h命令查看了一下磁盘使用情况,发现/data分区只使用了66%,还有12G的剩余空间,按理说不会出现这种问题. 二.分析问题: 后来用df -i查看了一下/data分区的索引节点(inode),发现已经用满(IUsed=100%),导致系统无法创建新目录和文件. inode译成中文就是索引节点,每个存储设备(例如硬盘)或存储设备的分区被格式化为文件系统后,应该有两部份