找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 18628|回复: 0

服务器TCP连接数过高运维排查与优化

[复制链接]

1

主题

0

回帖

5

积分

新手上路

积分
5
发表于 2026-8-12 01:49:00 | 显示全部楼层 |阅读模式
当服务器的TCP连接数过高时,可能导致性能下降甚至服务不可用。以下是详细的排查与优化步骤:

一、排查步骤

  • 监控当前连接数
  • 使用命令
    1. ss -s
    复制代码
    1. netstat -s
    复制代码
    查看总的TCP连接统计信息。
  • 使用
    1. netstat -ant | awk '{print $6}' | sort | uniq -c | sort -n
    复制代码
    1. ss -ant | awk '{print $1}' | sort | uniq -c
    复制代码
    查看各状态连接的数量。
  • 识别高连接数的来源
  • 使用
    1. netstat -antp | grep <端口>
    复制代码
    1. ss -antp 'sport = :<端口>'
    复制代码
    查看特定端口的连接详情。
  • 使用
    1. lsof -i :<端口>
    复制代码
    列出使用特定端口的进程。
  • 使用
    1. netstat -tunlp | grep <进程名或PID>
    复制代码
    查找特定进程打开的端口和连接。
  • 分析连接状态
  • TIME_WAIT:表示连接已关闭,但端口仍处于等待状态,通常是由于主动关闭连接的一方(客户端或服务器)在等待足够的时间以确保对方收到ACK包。
  • CLOSE_WAIT:表示对方已关闭连接,但本地尚未关闭,可能是由于应用程序未正确处理FIN包。
  • SYN_RECV:表示服务器收到了SYN包并回复了SYN-ACK,但尚未收到客户端的ACK,可能是半开连接攻击或网络问题。
  • 检查系统资源
  • 使用
    1. top
    复制代码
    1. htop
    复制代码
    1. vmstat
    复制代码
    查看CPU、内存和负载情况。
  • 使用
    1. free -m
    复制代码
    查看内存使用情况。
  • 检查磁盘I/O:
    1. iostat -x 1
    复制代码

  • 检查应用程序日志
  • 查看应用程序的日志文件,寻找异常或错误信息,特别是与连接相关的错误。


二、优化措施

  • 调整内核参数
  • 增大TCP连接数限制
    1. net.core.somaxconn
    复制代码
    :定义了每个端口最大的监听队列长度,增大此值可允许更多连接处于等待状态。
    1. net.ipv4.tcp_max_syn_backlog
    复制代码
    :对于还未获得客户端确认的连接请求,可保存在队列中的最大数目。
    1. net.core.netdev_max_backlog
    复制代码
    :每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的最大数据包数目。
  • 优化TIME_WAIT状态
    1. net.ipv4.tcp_tw_reuse
    复制代码
    :允许将TIME-WAIT sockets重新用于新的TCP连接。
    1. net.ipv4.tcp_tw_recycle
    复制代码
    (在较新内核中已移除,需谨慎使用或替代方案):启用快速回收TIME-WAIT sockets。
    1. net.ipv4.tcp_max_tw_buckets
    复制代码
    :控制并发的TIME-WAIT的数量,默认值是180000,过量可能会导致服务不可用。
  • 其他优化
    1. net.ipv4.tcp_keepalive_time
    复制代码
    1. net.ipv4.tcp_keepalive_probes
    复制代码
    1. net.ipv4.tcp_keepalive_intvl
    复制代码
    :调整TCP保持连接参数。
    1. net.ipv4.ip_local_port_range
    复制代码
    :定义本地端口的范围,增大此范围可允许更多客户端连接。
  • 优化应用程序
  • 连接池:使用连接池技术复用连接,减少频繁创建和关闭连接的开销。
  • 异步处理:采用异步I/O模型,提高处理并发连接的能力。
  • 超时设置:合理设置连接和请求的超时时间,及时释放无效连接。
  • 代码优化:检查应用程序代码,确保正确处理连接关闭和资源释放。
  • 负载均衡
  • 使用负载均衡器(如Nginx、HAProxy)将流量分散到多台服务器上,降低单台服务器的连接数压力。
  • 防火墙与安全组
  • 检查防火墙和安全组规则,确保没有不必要的开放端口和连接。
  • 限制单个IP的连接数,防止恶意攻击。
  • 监控与告警
  • 部署监控工具(如Prometheus、Grafana、Zabbix)实时监控TCP连接数和其他系统资源。
  • 设置告警规则,当连接数超过阈值时及时通知运维人员。
  • 定期维护
  • 定期检查系统日志和应用程序日志,及时发现并解决问题。
  • 定期更新系统和应用程序,修复已知的安全漏洞和性能问题。


通过以上排查与优化措施,可以有效降低服务器的TCP连接数,提高系统的稳定性和性能。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|五云论坛 ( 黔ICP备2022001370号-1|贵公网安备52032102000798号 )

GMT+8, 2026-9-12 17:19 , Processed in 0.071069 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表