linux云主机cpu一直很高降不下来,系统日志报nf_conntrack: table full, dropping packet.

在启用了iptables web服务器上,流量高的时候经常会出现下面的错误:

ip_conntrack: table full, dropping packet

这个问题的原因是由于web服务器收到了大量的连接,在启用了iptables的情况下,iptables会把所有的连接都做链接跟踪处理,这样iptables就会有一个链接跟踪表,当这个表满的时候,就会出现上面的错误。

iptables的链接跟踪表最大容量为/proc/sys/net/ipv4/ip_conntrack_max,链接碰到各种状态的超时后就会从表中删除。

所以解決方法一般有两个:

(1) 加大 ip_conntrack_max 值

vi /etc/sysctl.conf

net.ipv4.ip_conntrack_max = 393216 
net.ipv4.netfilter.ip_conntrack_max = 393216

(2)通过iptable限制

iptables -A INPUT -m state --state UNTRACKED -j ACCEPT --不做状态跟踪的链接就允许进入

参数 -m state --state 
范例 iptables -A INPUT -m state --state RELATED,ESTABLISHED 
说明 用来比对联机状态,联机状态共有四种:INVALID、ESTABLISHED、NEW 和 RELATED。

INVALID 表示该封包的联机编号(Session ID)无法辨识或编号不正确。 
ESTABLISHED 表示该封包属于某个已经建立的联机。 
NEW 表示该封包想要起始一个联机(重设联机或将联机重导向)。 
RELATED 表示该封包是属于某个已经建立的联机,所建立的新联机。例如:FTP-DATA 联机必定是源自某个 FTP 联机。

时间: 2024-10-12 20:32:31

linux云主机cpu一直很高降不下来,系统日志报nf_conntrack: table full, dropping packet.的相关文章

国内某公有云 linux云主机开机初始化过程分析和他的镜像制作过程

最近学习了国内某公有云的linux云主机启动之后,在镜像内部的初始化过程,分享出来,仅供参看. 一.开机过程 可以看到开机时候按照数字顺序执行了一连串的脚本,其中也提示的该公有云厂商的名字的ucloud,最后一条显示做了清理工作.进系统一看 果然找不到这些脚本了. 二.进单用户模式找出这些脚本 想让开机的时候不让最后一步 999-clwanup.sh执行的办法很多,我采取的的办法是单用户模式,简单上个图,具体方法大家谷歌下. 成功进入单用户模式,并复制他的初始化脚本 三 初始化过程分析 (一)

性能测试问题-Mysql数据库服务器的CPU占用很高

MySQl服务器CPU占用很高 1.  问题描述 一个简单的接口,根据传入的号段查询号码归属地,运行性能测试脚本,20个并发mysql的CPU就很高,监控发现只有一个select语句,且表建立了索引 2.  问题原因 查询语句索引没有命中导致 开始时的select SELECT `province_name`, `city_name` FROM `phoneno_section` WHERE SUBSTRING(?, phoneno_section_len) = phoneno_section

为什么空循环进程会导致CPU占有率很高?

最近在写一个时间戳系统记录系统中各个模块一些重要的时间节点.获取内核上报的时间戳是通过进程轮询的方式,但是发现该进程在实际运行中CPU占用率很高,其中就是一个死循环在读取设备文件,本以为是由于读系统调用太频繁的原因. 于是又写一个测试程序,其中仅仅是个空循环.结果发现该程序的CPU占用率居然在90%多! 针对这个问题我有2个疑问,对这些疑问的理解也记录在此,与大家分享. 1 linux系统是时间片调度算法,微观上所有可运行进程都是串行,不管进程中作何操作,该进程的时间片一到就切换到下一进程,那为

高配置的bgp云主机,企业,高端,高并发网站的选择--选择云主机需要注意的几点。

云主机已经兴起多时,国内也有比较有代表的云主机品牌,比如阿里云,腾讯云,华为云等等.但是由于云的概念在用户心里一直都是非常抽象以及难以理解,因此,难免会有不专业的商家就抓住这一点向客户销售性价比较低的云主机.这个时候如何识别是否是一个好的云主机呢?第一点就是看是否需要押金以及维护服务器的钱,云主机不同于独立服务器,都是零首付.零押金.零维护.第二点就是否拥有多节点可选择,云主机没有明显的单双线之分,因为采用的是云计算,因此,在全国各地拥有很多节点,线路覆盖全国多个城市的电信.网通.BGP.如果是

swoole cpu占用很高 porcess

情况:未开启swoole cup占用20%,开启swoole cup占用飙升到70 各种排查...哪怕是放以下那么点代码,cpu立马飙升70% $SystemNoticeProcess = new Swoole\Process(function($process) use ($server) { }); // 推送系统通知SystemNotice $this->server->addProcess($SystemNoticeProcess); 解决办法:增加sleep休眠 $SystemNot

Linux云主机获取本机公网IP地址

因为公司的云主机使用ifconfig和ip add命令都只能看到内网IP地址,而脚本里面又需要获取公网IP地址进行一些动作: # ip ad 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN      link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00     inet 127.0.0.1/8 scope host lo     inet6 ::1/12

CPU利用率很高 800%爆了

快下班,问题来了 记一次快下班的记录 快下班了,好友发来了一张照片,如下: 中毒了,没问题,肯定是!!! 开始qq对话解决 **有监控吗,快速查看流量图,看看是否发包或者被发包?** 答曰:没有监控 **那查看一下交换机的接口流量呢?** 答曰:交换机是傻瓜二层的 **那看看防火墙的呢?** 查看流量并没有什么影响. 实在是解决太慢了,而对方的机器是内容,最后通过内容的某太机器,我远程朋友的qq桌面,远程服务器,10分钟后终于连接上了. 开始远程解决问题 1.find / -name cranb

Linux排查Java程序占用CPU很高的解决办法

Java的工具集相当强大,学习成本也很低,处理线上问题时,jstack这个工具就比微软的windbg,好学好用很多,3步找出占用CPU很高的源所在.而windbg反人类的各种命令,实在不敢恭维. 故意设置了一个CPU占用很高的场景: 排查问题,步骤: 1. ps -mp [替换为进程ID PID] -o THREAD,tid,time 发现线程6322.6323占用CPU很高,时间也很长. 2. printf “%x” [线程ID TID] 把TID转换为16进制. 3. jstack [进程I

windows下揪出java程序占用cpu很高的线程 并找到问题代码 死循环线程代码

我的一个java程序偶尔会出现cpu占用很高的情况 一直不知道什么原因 今天终于抽时间解决了 系统是win2003 jvisualvm 和 jconsole貌似都只能看到总共占用的cpu 看不到每个线程分别占用的cpu呢 所以在windows平台上要找出到底是哪个线程占用的cpu还不那么容易,linux用top就简单多了 最后的解决方法: 1.找到java进程对应的pid. 找pid的方法是:打开任务管理器,然后点击 "查看" 菜单,然后点击 "选择列",把pid勾