CentOS中“backlog”通常指TCP连接队列或系统资源堆积问题,清理方法可从内核参数调整、系统资源清理、服务优化三方面入手,具体如下:
通过修改/etc/sysctl.conf永久生效,或用sysctl -w临时调整:
# 修改全连接队列最大长度(需结合应用层backlog参数)
echo "net.core.somaxconn=65535" >> /etc/sysctl.conf
# 修改SYN半连接队列最大长度(防范SYN Flood)
echo "net.ipv4.tcp_max_syn_backlog=65535" >> /etc/sysctl.conf
sudo sysctl -p
echo "net.ipv4.tcp_syncookies=1" >> /etc/sysctl.conf
sudo sysctl -p
# 清空指定日志文件(如Nginx/Apache)
truncate -s 0 /var/log/nginx/access.log
# 或使用logrotate轮转日志
logrotate /etc/logrotate.conf
rm -rf /tmp/* /var/tmp/*
yum clean all
rm -rf /var/cache/yum/*
listen参数的backlog值(需≤内核somaxconn):listen 80 backlog=4096;
systemctl restart nginx/your-service
ss -lnt | awk '{print $4, $2}' | sort -k2 -nr # 查看监听端口队列占用
sysctl net.core.somaxconn # 查看当前内核参数
注意:修改前建议备份配置文件,生产环境需先在测试环境验证,避免因参数不当导致服务异常。