在 Linux 系统中,"同时连接数"(或并发连接数)是一个与多个系统组件相关的概念,包括但不限于:
- 网络服务(如 HTTP、SSH)
- 系统资源限制
- 内核参数设置
- 文件描述符限制
你提到的 “esc” 可能是拼写错误。常见的相关服务有:
- SSH(Secure Shell)
- Nginx / Apache(Web 服务器)
- MySQL / PostgreSQL(数据库)
如果你是指 SSH 的最大连接数,或者是某个服务的最大并发连接数,请进一步说明。
下面我将从几个常见角度来解释 Linux 中如何查看和设置“同时连接数”。
🛠️ 一、查看当前系统的连接数
查看当前 TCP 连接状态数量:
netstat -ant | awk '{print $6}' | sort | uniq -c | sort -n
查看当前已建立的连接总数:
ss -s | grep "TCP: "
或者:
netstat -ant | grep ESTABLISHED | wc -l
🔧 二、限制和服务相关的连接数
1. SSH 最大连接数
SSH 的最大连接数由 /etc/ssh/sshd_config 中的 MaxSessions 和 MaxStartups 控制:
grep MaxStartups /etc/ssh/sshd_config
# 示例输出:MaxStartups 10:30:60
- 表示最多允许 60 个未认证的连接。
- 修改后需要重启 SSH 服务:
systemctl restart sshd
2. 系统级限制:文件描述符 & 连接数
Linux 每个连接都需要一个文件描述符(file descriptor),所以要调整连接数上限,通常需要修改 FD 限制。
查看当前用户打开文件数限制:
ulimit -n
查看系统全局最大连接数:
cat /proc/sys/fs/file-max
修改方式:
-
临时生效:
sysctl fs.file-max=100000 -
永久生效:编辑
/etc/sysctl.conf添加:fs.file-max = 100000
然后应用:
sysctl -p
3. 针对特定服务(如 Nginx、Apache、MySQL)
这些服务都有自己的最大连接数配置项,例如:
Nginx:
events {
worker_connections 1024;
}
MySQL:
max_connections = 500
📊 三、查看当前系统使用的连接数
cat /proc/net/sockstat
输出示例:
sockets: used 132
TCP: inuse 49 orphan 0 tw 102 alloc 53 mem 5
✅ 总结:影响连接数的因素
| 组件 | 配置项 | 作用 |
|---|---|---|
| ulimit | ulimit -n |
单个进程可打开的最大文件数 |
| file-max | /proc/sys/fs/file-max |
整个系统最大文件句柄数 |
| net.core.somaxconn | sysctl 设置 |
listen 队列最大长度 |
| 服务配置 | 如 nginx 的 worker_connections |
服务自身最大连接控制 |
如果你能提供更详细的信息,比如:
- 是哪个服务?
- 是想提高连接数还是排查连接过多问题?
- 使用的是哪种 Linux 发行版?
我可以给出更具体的建议!
CDNK博客