在阿里云监控上看到 ECS 主机的 TCP 总连接数只能到达 4900~5000 左右,到达这个数值之后就拉平了,几乎不再波动。大部分连接处于 TIME_WAIT 的状态,相关的文章看过好几篇,不过都是使用违反 TCP 协议,复用连接的方式,减少 TIME_WAIT 数量。
这个连接数随着业务低谷也会降低到几百个,但是峰值只能达到 5000 。WEB 日志监控也看到白天的并发连接峰值大约 200 ,平均也就 30~40 ,平均延迟一般在 100ms 。
哪位大佬知道这个 5000 左右的连接上限正常吗,可能跟什么有关,能不能提升。
1
ghostheaven OP 补充:
负载是 NGINX 加 PHP-FPM ,其中: * NGINX 默认启动了 8 个 worker process ,`worker_connections`设置为 2048 * NGINX 与 PHP-FPM 是通过 unix socket 连接 * PHP-FPM 的 pool 配置为 ``` pm = dynamic pm.max_children = 100 pm.start_servers = 10 pm.max_spare_servers = 15 pm.max_requests = 0 # 默认值 ``` * ECS 主机的日常 CPU 负载也不高,白天峰值 60%,夜间低谷 2-3%,内存占用一般 15%左右,几乎无变化 |
2
elechi 2022-04-28 14:35:02 +08:00
内核配置?瞎猜
|
3
ghostheaven OP @elechi ulimit 那边看打开文件限制是 65535 。有什么内核设置会影响这个数量?系统是 Ubuntu 18 server
|
4
datocp 2022-04-28 19:00:03 +08:00 via Android
这个不应该是跟访问的用户数有关?
其它能解决的估计是修改 tcp/udp timeout 控制,多少时间建立的连接消亡,默认没记错的话 openwrt 可能高达 1 天。目前最高的 10 分钟,最短的几秒。 #/proc/sys/net/netfilter/nf_conntrack_* net.netfilter.nf_conntrack_generic_timeout=600 net.netfilter.nf_conntrack_tcp_timeout_syn_sent=120 net.netfilter.nf_conntrack_tcp_timeout_syn_recv=60 net.netfilter.nf_conntrack_tcp_timeout_fin_wait=120 net.netfilter.nf_conntrack_tcp_timeout_time_wait=120 net.netfilter.nf_conntrack_tcp_timeout_close=10 net.netfilter.nf_conntrack_tcp_timeout_close_wait=60 net.netfilter.nf_conntrack_tcp_timeout_last_ack=30 |
5
hahahahahahahah 2022-04-29 08:03:50 +08:00 via iPhone
看看可用端口
|
6
ghostheaven OP @hahahahahahahah 去哪里看,我看分配的端口号是从 3 万多到 6 万多,应该高于 5000
|
7
hahahahahahahah 2022-04-29 10:55:41 +08:00 via iPhone
@ghostheaven nginx 没报错吗,看看 ngunx 日志,还有系统日志。可以的话先自己压测下,看看会不会有报错
|
8
xzysaber 2022-04-29 14:17:02 +08:00 1
FPM 是用 systemd 管理的吗?如果是的话,可以使用 "systemctl show {UNITNAME}|grep LimitNOFILE" 查看下。
systemd 管理的应用的打开的文件数上限好像是不受 limit 约束。 |
9
xzysaber 2022-04-29 14:21:47 +08:00 1
或者你可以直接查出涉及到的各个进程 PID 到 /proc 下去查看下现在对应的数量:cat /proc/{PID}/limits
。 |
10
MidGap 2022-04-29 14:58:22 +08:00
跟分配的端口数没太大关系,别人连你不都是连同一个端口么; 看下 close 连接的地方有没有问题吧。
|
11
ghostheaven OP @xzysaber 果然被限制到 4800 了,我把 nginx 和 php-fpm 改成 10000 了,等峰值到了再看下监控。
|