操作系统版本:CentOS Linux release 7.6.1810 (Core)
操作系统镜像安装后,未进行任何调整。正常部署应用,应用在 CentOS 7.9 未出现过此类现象。
问题描述:负载教高的时候,出现周期性的访问中断、恢复、中断、恢复 …… 并且非常的有规律
结论:操作系统版本默认参数配置太小,导致的访问中断。
# 查看报错信息
[root@i-test ~]# dmesg
…… …… ……
…… …… …… net_ratelimit: 89 callbacks suppressed
…… …… …… nf_conntrack: table full, dropping packet
…… …… …… nf_conntrack: table full, dropping packet
…… …… ……
# 查看配置参数
[root@i-test ~]# sysctl -a | grep conntrack
…… …… ……
# 关键因素
net.nf_conntrack_max = 65535
…… …… ……
如果一定要使用 CentOS 最好使用 7.9 版本。推荐新项目使用其他操作系统吧,CentOS 7 有点太老了,而且已经进入末期了,后续也不会持续维护了!可以选择 OpenEuler、Rocky Linux 等。
# 临时修改,重启失效
[root@i-test ~]# echo 655350 > /proc/sys/net/netfilter/nf_conntrack_max
[root@i-test ~]# cat /proc/sys/net/netfilter/nf_conntrack_max
655350
# 推荐,重启仍生效
[root@i-test ~]# vi /etc/sysctl.conf
# 增加参数
# net.netfilter.nf_conntrack_max = 655350
待优化
无需优化
说明:没必要每个版本都测试了!后续发现其他有影响的版本也会记录下来。最安全的方法升级到最新版本吧!