银河麒麟系统最大并发连接数修改方法

作者:技术拾光

时间:2026-07-09

浏览:508

银河麒麟系统高并发连接需调整:扩大TCP全/半连接队列(修改tcp_max_syn_backlog、somaxconn);扩展本地端口范围并缩短TIME_WAIT;提升文件描述符限制(limits.conf及systemd配置)。

文章目录

你是不是也遇到过这样的情况?银河麒麟系统跑高并发网络服务时,客户端突然连不上,要么连接被拒绝,要么报"Cannot assign requested address",还时不时超时。别慌,这十有八九是系统级并发连接能力被默认参数锁死了。要真正解决问题,必须从内核队列、端口资源、文件描述符三个方向同步动手,缺一不可。

银河麒麟系统最大并发连接数修改方法

扩大TCP全连接与半连接队列

内核用两个队列管理连接:半连接队列(SYN_RECV)暂存未完成三次握手的请求;全连接队列(ESTABLISHED)存放已握手完成、等待应用accept()的连接。这两个队列如果太小,新连接就会被直接丢弃,而且不会报错,只会静默丢包——这是最让人头疼的情况。

第一步:编辑/etc/sysctl.conf,在末尾追加两行:

net.ipv4.tcp_max_syn_backlog = 65535
net.core.somaxconn = 65535

第二步:执行sudo sysctl -p立即加载配置。

第三步:验证是否生效:sudo sysctl net.ipv4.tcp_max_syn_backlog net.core.somaxconn,输出值必须为65535。

注意:只改内核参数还不够。Nginx需要在listen指令中显式加上backlog=65535,Tomcat需要在server.xml里把acceptCount设为65535,否则应用层仍然卡在默认的128上,前面改的等于白费。

扩展本地临时端口范围并缩短TIME_WAIT

对于作为客户端高频发起连接的服务(比如API网关),可用临时端口数量由ip_local_port_range决定。默认值32768–65535只提供大约3.2万个端口,在短连接密集场景下,这些端口很快就会被占光,然后直接触发"Cannot assign requested address"错误。

方法一:修改端口范围

向/etc/sysctl.conf添加一行:net.ipv4.ip_local_port_range = 1024 65535

执行sudo sysctl -p使配置生效。

方法二:加快端口复用

执行echo "net.ipv4.tcp_fin_timeout = 30" | sudo tee -a /etc/sysctl.conf && sudo sysctl -p,将TIME_WAIT状态持续时间从默认60秒压缩至30秒。

验证端口范围是否更新:sudo sysctl net.ipv4.ip_local_port_range,输出应为1024 65535。

提升文件描述符系统限制

每个TCP连接至少占用一个文件描述符(fd)。如果系统级或进程级fd限制过低,即使内核参数已经调高,连接仍然会在用户态被拒绝,表现为"Too many open files"错误。

第一步:编辑/etc/security/limits.conf,追加四行:

* soft nofile 65535
* hard nofile 65535
* soft noproc 65535
* hard noproc 65535

第二步:确认PAM模块启用limits配置——检查/etc/pam.d/common-session中存在且未被注释的行:session required pam_limits.so。

第三步:退出当前SSH会话,重新登录后执行ulimit -n,输出必须为65535。

注意:systemd服务(如nginx、mysql)完全无视limits.conf,必须额外在/etc/systemd/system.conf中设置DefaultLimitNOFILE=65535并执行sudo systemctl daemon-reload。这一步很容易被忽略,但恰恰是生产环境里最常见的坑。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章