2026年1月29日星期四

小型网站的ubuntu服务器如何提升连接数

 当服务器有多个api应用,或者网站的时候,会出现网页打不开。但是cpu、内存等都很空闲。这种情况,有可能是网站的文件数设置不正确。

查询服务器支持的TCP连接数:

ulimit -n

默认是1024

需要增加方法:

编辑/etc/security/limits.conf

* soft nofile 65535

* hard nofile 65535

* soft nproc  4096

* hard nproc  4096

前面的*,表示任何的用户的连接数都设置这个值
作用
soft进程默认可用上限
hardsoft 的最大允许值

确认这个文件存在:
cat /etc/pam.d/common-session | grep pam_limits
如果没有,补一行:
session required pam_limits.so


查询 listen 队列
sysctl net.core.somaxconn

增大 listen 队列 somaxconn:
echo "net.core.somaxconn = 4096" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

查询TCP 半连接队列
sysctl net.ipv4.tcp_max_syn_backlog
echo "net.ipv4.tcp_max_syn_backlog = 4096" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

TIME_WAIT / 短连接复用
echo "net.ipv4.tcp_tw_reuse = 1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
如果是2,表示允许 TCP 连接在 TIME_WAIT 状态下,被“更激进地”复用(包括对外主动连接)
比= 1更宽松。

验证 TCP 是否够用
# 查看监听状态
ss -ltn
# 查看 TIME_WAIT 状态
ss -ant | grep TIME-WAIT | wc -l
# 查看当前 fd 限制
root@WIN-V50OVF8TIBU:~# ulimit -Sn
1024
root@WIN-V50OVF8TIBU:~# ulimit -Hn
1048576

ulimit -Sn是当前的bash的文件数限制,与业务无关,ulimit -n 也是。不用管

# 测试 backlog 队列
sudo ss -lntp | grep 5007

查询systemctl的配置情况:
systemctl show --property=DefaultLimitNOFILE --property=DefaultLimitNPROC
systemd 全局默认设置:
编辑文件/etc/systemd/system.conf
设置(或取消注释):
DefaultLimitNOFILE=65535
DefaultLimitNPROC=4096

保存后,重启systemctl
systemctl daemon-reexec
 再重启所有业务

一次性查看所有python业务是否正常了:
for pid in $(pidof python); do
  echo "=== PID $pid ==="
  cat /proc/$pid/limits | grep -E "Max open files|Max processes"
done

查询python进程的状态
ps -o pid,stat,%cpu,cmd -C python
  • STAT 字段:

    • R → 正在运行(CPU 占用高)

    • S → 休眠,等待事件(正常)

    • D → uninterruptible sleep(等待 I/O,被卡)

  • %CPU 字段:

    • 高 CPU 长时间持续 → worker 在卡死运算

    • 0–1% → worker 在等待网络/文件(可能是慢 I/O,不是真卡死)





  • 没有评论:

    发表评论

    小型网站的ubuntu服务器如何提升连接数

     当服务器有多个api应用,或者网站的时候,会出现网页打不开。但是cpu、内存等都很空闲。这种情况,有可能是网站的文件数设置不正确。 查询服务器支持的TCP连接数: ulimit -n 默认是1024 需要增加方法: 编辑/etc/security/limits.conf * s...