Bash脚本是Linux/Unix系统的命令行解释器,用于自动化系统管理、任务处理和程序执行,它通过解释命令实现高效操作,是系统管理员和开发者提升工作效率的必备工具,灵活且功能强大。
在Linux系统中,查看并发连接数或并发进程数是运维和开发中的常见需求,主要涉及网络连接并发(如TCP连接)和系统进程/线程并发两类场景,以下是详细的操作方法和工具解析:
查看网络并发连接数
适用于分析Web服务器、数据库等服务的实时连接压力。
使用 netstat
命令
netstat -ant | grep 'ESTABLISHED' | wc -l
- 解析:
-ant
:显示所有TCP连接(a
)、不解析主机名(n
)、仅TCP(t
)。grep 'ESTABLISHED'
:过滤已建立的连接。wc -l
:统计行数(即并发连接数)。
- 扩展统计:
- 按端口统计:
netstat -ant | grep :80 | wc -l
(查看80端口的并发)。
- 按端口统计:
使用 ss
命令(推荐,更高效)
ss -s | grep 'estab'
输出示例:
Total: 187
TCP: 10 (estab 5, closed 0, orphaned 0)
- 解析:直接显示
estab
(已建立连接)的数量,效率比netstat
更高。
按状态分类统计
ss -ant | awk 'NR>1 {print $1}' | sort | uniq -c
输出示例:
5 ESTAB
2 LISTEN
3 TIME-WAIT
- 解析:统计不同状态(如
ESTAB
、TIME-WAIT
)的连接数量。
查看系统进程/线程并发数
适用于分析多进程/线程应用的资源占用。
查看进程并发数(如Nginx Worker)
ps -ef | grep 'nginx' | grep -v 'grep' | wc -l
- 解析:统计Nginx工作进程的数量。
查看线程并发数
top -H -p $(pgrep nginx | head -1)
- 解析:
-H
:显示线程视图。-p
:指定进程ID(示例中获取Nginx主进程ID)。
- 替代命令:
ps -T -p <PID> | wc -l # 统计指定进程的线程数
系统级线程监控
cat /proc/sys/kernel/threads-max # 系统允许的最大线程数 cat /proc/sys/kernel/pid_max # 系统允许的最大进程数
高级工具:实时监控并发
nload
监控网络流量
nload -m eth0 # 实时显示网卡流量和连接趋势
htop
动态查看进程/线程
htop # 按F2启用线程视图
dstat
综合性能监控
dstat -tcp # 实时显示TCP连接状态统计
自动化脚本示例
统计Web服务器(80端口)的并发连接数并记录:
conn_count=$(ss -ant sport = :80 | grep -c 'ESTAB') echo "$(date) - 并发连接数: $conn_count" >> /var/log/conn.log sleep 5 done
关键注意事项
- 权限要求:部分命令需
root
权限(如netstat
、ss
)。 - 状态含义:
ESTABLISHED
:活跃连接。TIME-WAIT
:连接关闭后的等待状态(可能占用资源)。
- 性能影响:高频执行统计命令可能加重系统负载,建议间隔≥2秒。
- 并发瓶颈:若连接数接近系统限制,需调整内核参数:
sysctl -w net.core.somaxconn=1024 # 增大TCP队列
引用说明
- Linux Man Pages:
netstat(8)
,ss(8)
,proc(5)
。 - 工具文档:nload, htop, dstat。
- 内核参数优化:Red Hat Performance Tuning Guide。
通过上述方法,可精准定位Linux系统的并发负载,为性能优化提供数据支撑,建议结合监控工具(如Prometheus+Grafana)实现长期趋势分析。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/8268.html