Debian 高并发调优实战:从系统参数到 Nginx 的完整配置命令
Debian 高并发解决方案|附完整命令
在 Web 服务、API 网关、数据库代理、消息队列、实时推送、爬虫调度、文件下载等场景中,Debian 服务器经常需要承载大量并发连接。如果系统默认参数不做调整,很容易遇到以下问题:
- 连接数一高就出现
Too many open files - Nginx / HAProxy / Node.js / Java 服务并发上不去
- TCP 连接堆积,出现大量
TIME_WAIT - 短连接请求高峰时端口耗尽
- 系统负载突然升高,响应时间明显变慢
- 数据库或 Redis 连接池满载
- 内核队列、文件句柄、进程数限制成为瓶颈
本文以 Debian 11 / Debian 12 为主要环境,提供一套较完整的高并发优化方案,包含系统参数、文件句柄、TCP 网络栈、Nginx、systemd、内核队列、监控排查等内容,并附带完整命令,方便直接落地使用。
一、高并发优化的核心思路
高并发不是只改一个参数就能解决的问题,而是一个系统工程。通常需要从以下几个层面同时优化:
-
系统资源限制
- 文件描述符数量
- 用户进程数
- systemd 服务限制
-
Linux 内核网络参数
- TCP backlog
- socket 队列
- TIME_WAIT 处理
- 本地端口范围
- TCP keepalive
- SYN 队列
-
应用服务配置
- Nginx worker 数量
- Nginx worker_connections
- 连接复用
- upstream keepalive
- 超时时间
-
业务架构优化
- 缓存
- 连接池
- 异步队列
- 限流降级
- 负载均衡
-
监控与压测
- 通过压测确认瓶颈
- 通过监控发现异常
- 通过日志定位问题
如果只修改系统参数,却不优化应用程序,那么高并发能力仍然有限;反过来,如果应用写得很好,但系统限制没有打开,同样会很快碰到瓶颈。
二、查看当前系统基础信息
在优化之前,建议先查看当前 Debian 系统版本、内核版本、CPU、内存和连接状态。
cat /etc/debian_version
uname -a
lscpu
free -h
df -h
uptime
查看当前 TCP 连接情况:
ss -s
查看各种 TCP 状态数量:
ss -ant | awk 'NR>1 {++s[$1]} END {for(k in s) print k,s[k]}'
常见状态含义如下:
| 状态 | 含义 |
|---|---|
| ESTAB | 已建立连接 |
| LISTEN | 监听状态 |
| TIME-WAIT | 主动关闭连接后等待状态 |
| SYN-SENT | 已发送 SYN,等待响应 |
| SYN-RECV | 已收到 SYN,等待连接完成 |
| CLOSE-WAIT | 对端关闭,本端未关闭 |
如果 TIME-WAIT、SYN-RECV 或 CLOSE-WAIT 数量异常高,需要结合应用日志和网络参数进一步分析。
三、提升文件描述符限制
Linux 中每个 TCP 连接、文件、管道、Socket 都会占用文件描述符。如果文件描述符限制太低,高并发服务很容易出现:
Too many open files
查看当前限制:
ulimit -n
查看系统级最大文件数:
cat /proc/sys/fs/file-max
cat /proc/sys/fs/file-nr
临时提高当前 shell 的文件描述符限制:
ulimit -n 1048576
但这种方式只对当前终端有效,重启或重新登录后会失效。
1. 修改 limits.conf
编辑配置文件:
sudo nano /etc/security/limits.conf
在文件末尾添加:
* soft nofile 1048576
* hard nofile 1048576
* soft nproc 65535
* hard nproc 65535
root soft nofile 1048576
root hard nofile 1048576
root soft nproc 65535
root hard nproc 65535
确保 PAM 加载 limits 模块:
sudo nano /etc/pam.d/common-session
确认存在:
session required pam_limits.so
如果没有,则添加进去。
再编辑:
sudo nano /etc/pam.d/common-session-noninteractive
同样确认存在:
session required pam_limits.so
重新登录后查看:
ulimit -n
四、调整 systemd 服务文件限制
Debian 默认使用 systemd 管理服务。即使你在 /etc/security/limits.conf 中修改了文件句柄,如果服务是由 systemd 启动的,仍然可能受 systemd 限制。
查看某个服务的限制,例如 Nginx:
systemctl show nginx | grep -i limit
为 Nginx 创建 override 配置:
sudo systemctl edit nginx
添加:
[Service]
LimitNOFILE=1048576
LimitNPROC=65535
保存后执行:
sudo systemctl daemon-reload
sudo systemctl restart nginx
再次检查:
systemctl show nginx | grep -i LimitNOFILE
如果你的服务是自定义服务,例如:
/etc/systemd/system/myapp.service
可以直接在 service 文件中添加:
[Service]
LimitNOFILE=1048576
LimitNPROC=65535
然后执行:
sudo systemctl daemon-reload
sudo systemctl restart myapp
五、优化内核 sysctl 参数
Debian 的网络并发能力很大程度取决于内核参数。可以通过 /etc/sysctl.conf 或 /etc/sysctl.d/*.conf 来持久化配置。
建议新建独立配置文件:
sudo nano /etc/sysctl.d/99-high-concurrency.conf
写入以下内容:
# =========================
# File system
# =========================
fs.file-max = 2097152
fs.nr_open = 2097152
# =========================
# Network core
# =========================
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 250000
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.core.optmem_max = 16777216
# =========================
# TCP basic
# =========================
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_syn_retries = 3
net.ipv4.tcp_synack_retries = 3
net.ipv4.tcp_abort_on_overflow = 0
# =========================
# TCP connection reuse and TIME_WAIT
# =========================
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_max_tw_buckets = 2000000
net.ipv4.tcp_tw_reuse = 1
# =========================
# Local port range
# =========================
net.ipv4.ip_local_port_range = 1024 65535
# =========================
# TCP keepalive
# =========================
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 5
# =========================
# TCP memory
# =========================
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864
# =========================
# Routing cache and orphan sockets
# =========================
net.ipv4.tcp_max_orphans = 262144
net.ipv4.route.gc_timeout = 100
# =========================
# IP forward, usually disabled for normal web server
# =========================
net.ipv4.ip_forward = 0
# =========================
# Conntrack, useful when server uses NAT/firewall heavily
# =========================
net.netfilter.nf_conntrack_max = 1048576
应用配置:
sudo sysctl --system
查看是否生效:
sysctl fs.file-max
sysctl fs.nr_open
sysctl net.core.somaxconn
sysctl net.ipv4.tcp_max_syn_backlog
sysctl net.ipv4.ip_local_port_range
六、几个关键内核参数解释
1. fs.file-max
系统级最大文件句柄数量。
fs.file-max = 2097152
如果服务器承载大量连接,这个值应明显高于所有服务可能使用的文件描述符总和。
2. net.core.somaxconn
控制监听队列的最大长度。
net.core.somaxconn = 65535
Nginx、Redis、Node.js、Java 服务在调用 listen() 时会使用 backlog,但实际值会受到 somaxconn 限制。高并发短连接场景下,该值过小容易导致连接排队或被拒绝。
3. net.ipv4.tcp_max_syn_backlog
SYN 队列最大长度。
net.ipv4.tcp_max_syn_backlog = 262144
在大量新连接请求进入时,如果 SYN 队列过小,可能导致连接失败或重传增加。
4. net.ipv4.ip_local_port_range
本地临时端口范围。
net.ipv4.ip_local_port_range = 1024 65535
当服务器作为客户端访问后端服务、数据库、Redis、上游接口时,会消耗本地临时端口。如果端口范围太小,在高并发短连接场景下可能出现端口耗尽。
5. net.ipv4.tcp_tw_reuse
允许在安全条件下复用 TIME_WAIT 连接。
net.ipv4.tcp_tw_reuse = 1
注意:新版 Linux 已经移除了早期的 tcp_tw_recycle 参数,不要再使用它。tcp_tw_recycle 在 NAT 场景下会导致严重连接异常。
6. net.ipv4.tcp_fin_timeout
减少 FIN-WAIT-2 状态等待时间。
net.ipv4.tcp_fin_timeout = 15
该参数可以帮助系统更快释放部分连接资源,但不建议设置得过低。
七、Nginx 高并发配置优化
Nginx 是 Debian 上最常见的高并发反向代理和静态资源服务器。安装 Nginx:
sudo apt update
sudo apt install -y nginx
查看版本和编译参数:
nginx -v
nginx -V
编辑主配置文件:
sudo nano /etc/nginx/nginx.conf
可以参考以下配置:
user www-data;
worker_processes auto;
worker_rlimit_nofile 1048576;
pid /run/nginx.pid;
events {
use epoll;
worker_connections 65535;
multi_accept on;
accept_mutex off;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 30;
keepalive_requests 10000;
types_hash_max_size 4096;
server_tokens off;
client_header_timeout 10;
client_body_timeout 10;
send_timeout 10;
client_max_body_size 50m;
access_log off;
error_log /var/log/nginx/error.log warn;
gzip on;
gzip_comp_level 3;
gzip_min_length 1024;
gzip_types
text/plain
text/css
application/json
application/javascript
application/xml
text/xml;
include /etc/nginx/mime.types;
default_type application/octet-stream;
upstream backend {
server 127.0.0.1:3000 max_fails=3 fail_timeout=30s;
keepalive 1024;
}
server {
listen 80 backlog=65535 reuseport;
server_name example.com;
location / {
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 5s;
proxy_send_timeout 30s;
proxy_read_timeout 30s;
proxy_buffering on;
proxy_buffers 64 16k;
proxy_busy_buffers_size 128k;
proxy_pass http://backend;
}
}
}
检查配置:
sudo nginx -t
重启 Nginx:
sudo systemctl restart nginx
查看 Nginx 状态:
sudo systemctl status nginx
Nginx 最大连接数估算
理论最大连接数约等于:
worker_processes × worker_connections
如果服务器是 8 核 CPU:
8 × 65535 ≈ 524280
但这只是理论值,实际能力还受以下因素影响:
- 内存大小
- CPU 性能
- 后端服务能力
- 网络带宽
- TLS 加解密开销
- 日志写入性能
- 业务接口耗时
- 数据库响应速度
因此不能只看连接数,还要关注吞吐量、延迟和错误率。
八、开启 Nginx reuseport
在高并发场景下,reuseport 可以让多个 worker 进程分别监听同一个端口,减少锁竞争,提高多核利用率。
配置方式:
listen 80 reuseport backlog=65535;
如果是 HTTPS:
listen 443 ssl http2 reuseport backlog=65535;
修改后检查:
sudo nginx -t
sudo systemctl reload nginx
九、HTTPS 高并发注意事项
如果你的业务大量使用 HTTPS,需要额外关注 TLS 开销。
建议开启 HTTP/2:
listen 443 ssl http2 reuseport backlog=65535;
配置 SSL Session Cache:
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 1d;
ssl_session_tickets on;
推荐配置示例:
server {
listen 443 ssl http2 reuseport backlog=65535;
server_name example.com;
ssl_certificate /etc/ssl/example.com/fullchain.pem;
ssl_certificate_key /etc/ssl/example.com/privkey.pem;
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 1d;
ssl_session_tickets on;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_pass http://backend;
}
}
如果流量非常大,建议考虑:
- CDN 卸载 HTTPS
- 专用负载均衡
- 多台 Nginx 横向扩展
- 开启连接复用
- 减少动态请求比例
十、安装常用排查工具
在 Debian 上可以安装以下工具用于排查系统瓶颈:
sudo apt update
sudo apt install -y \
htop \
iftop \
iotop \
nload \
sysstat \
dstat \
tcpdump \
strace \
lsof \
net-tools \
iproute2 \
curl \
wget \
jq
启用 sysstat:
sudo systemctl enable sysstat
sudo systemctl start sysstat
查看 CPU:
top
htop
mpstat -P ALL 1
查看内存:
free -h
vmstat 1
查看磁盘 I/O:
iostat -x 1
iotop
查看网络流量:
iftop
nload
sar -n DEV 1
查看端口监听:
ss -lntp
查看连接数最多的 IP:
ss -ant | awk 'NR>1 {print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr | head
查看某个端口连接状态,例如 80:
ss -ant sport = :80 | awk 'NR>1 {++s[$1]} END {for(k in s) print k,s[k]}'
查看某个进程打开的文件数:
pidof nginx
ls /proc/$(pidof nginx | awk '{print $1}')/fd | wc -l
查看所有 Nginx 进程文件描述符:
for pid in $(pidof nginx); do echo -n "$pid "; ls /proc/$pid/fd | wc -l; done
十一、压测工具与命令
优化参数后,必须通过压测验证效果。常见压测工具包括 wrk、ab、hey。
1. 安装 wrk
Debian 默认仓库可能没有最新版 wrk,可以编译安装:
sudo apt update
sudo apt install -y build-essential git libssl-dev zlib1g-dev
cd /opt
sudo git clone https://github.com/wg/wrk.git
cd wrk
sudo make
sudo cp wrk /usr/local/bin/
wrk -v
压测示例:
wrk -t8 -c1000 -d60s http://127.0.0.1/
参数说明:
| 参数 | 含义 |
|---|---|
-t8 |
使用 8 个线程 |
-c1000 |
保持 1000 个并发连接 |
-d60s |
持续压测 60 秒 |
更高并发:
wrk -t16 -c10000 -d120s http://127.0.0.1/
注意:不要在生产环境直接对公网服务进行极限压测,否则可能影响真实用户。
2. 安装 ApacheBench
sudo apt install -y apache2-utils
压测:
ab -n 100000 -c 1000 http://127.0.0.1/
3. 安装 hey
sudo apt install -y golang-go
go install github.com/rakyll/hey@latest
加入环境变量:
echo 'export PATH=$PATH:$HOME/go/bin' >> ~/.bashrc
source ~/.bashrc
压测:
hey -n 100000 -c 1000 http://127.0.0.1/
十二、应用服务层优化建议
系统优化只是基础,真正的高并发能力主要取决于应用架构。
1. 使用连接池
无论是 MySQL、PostgreSQL、Redis,还是 HTTP 调用,都应使用连接池。不要每个请求都新建连接。
例如 Node.js 访问 MySQL 时,应限制连接池大小:
const mysql = require('mysql2/promise');
const pool = mysql.createPool({
host: '127.0.0.1',
user: 'app',
password: 'password',
database: 'app',
waitForConnections: true,
connectionLimit: 100,
queueLimit: 10000
});
连接池不是越大越好。过大的连接池可能把数据库压垮。
2. 使用缓存
高频读取数据应优先进入缓存,例如 Redis:
sudo apt install -y redis-server
sudo systemctl enable redis-server
sudo systemctl start redis-server
查看 Redis 状态:
redis-cli ping
常见缓存策略:
- 热点数据缓存
- 页面缓存
- 接口结果缓存
- 本地内存缓存
- Redis 分布式缓存
- CDN 静态资源缓存
3. 使用异步队列
耗时任务不要阻塞用户请求,例如:
- 发送邮件
- 生成报表
- 图片处理
- 视频转码
- 大批量数据同步
- 消息通知
可以使用 RabbitMQ、Kafka、Redis Stream、NATS 等消息队列。
4. 限流与降级
高并发系统必须考虑极端流量。Nginx 可以实现基础限流:
http {
limit_req_zone $binary_remote_addr zone=req_limit:10m rate=10r/s;
server {
location /api/ {
limit_req zone=req_limit burst=20 nodelay;
proxy_pass http://backend;
}
}
}
连接数限制:
http {
limit_conn_zone $binary_remote_addr zone=conn_limit:10m;
server {
location / {
limit_conn conn_limit 50;
proxy_pass http://backend;
}
}
}
这些策略可以防止单个 IP 或异常流量拖垮服务。
十三、数据库层高并发注意事项
很多系统的并发瓶颈并不在 Debian 或 Nginx,而是在数据库。
MySQL 常见检查命令
mysql -uroot -p -e "SHOW VARIABLES LIKE 'max_connections';"
mysql -uroot -p -e "SHOW STATUS LIKE 'Threads_connected';"
mysql -uroot -p -e "SHOW STATUS LIKE 'Threads_running';"
mysql -uroot -p -e "SHOW PROCESSLIST;"
临时修改最大连接数:
SET GLOBAL max_connections = 1000;
持久化配置:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
添加或修改:
[mysqld]
max_connections = 1000
skip_name_resolve = 1
重启 MySQL:
sudo systemctl restart mysql
但需要注意,max_connections 增大意味着更多内存消耗,不应盲目调到非常高。
十四、防火墙与 conntrack 优化
如果服务器使用 iptables、nftables、Docker、Kubernetes 或 NAT,连接跟踪表可能成为瓶颈。
查看 conntrack 最大值:
sysctl net.netfilter.nf_conntrack_max
查看当前使用量:
cat /proc/sys/net/netfilter/nf_conntrack_count
如果提示找不到文件,可以加载模块:
sudo modprobe nf_conntrack
安装 conntrack 工具:
sudo apt install -y conntrack
查看统计:
sudo conntrack -S
临时设置:
sudo sysctl -w net.netfilter.nf_conntrack_max=1048576
持久化已在前面的 99-high-concurrency.conf 中配置。
十五、日志写入优化
高并发场景下,日志也可能成为瓶颈。尤其是访问日志写入频繁时,会增加磁盘 I/O。
Nginx 可以关闭访问日志:
access_log off;
或者设置缓冲:
access_log /var/log/nginx/access.log combined buffer=512k flush=5s;
对于应用日志,建议:
- 异步写日志
- 控制日志级别
- 避免打印大对象
- 使用日志采样
- 接入 ELK、Loki 等集中日志系统
- 确保日志轮转正常
查看 logrotate 配置:
cat /etc/logrotate.d/nginx
手动测试:
sudo logrotate -d /etc/logrotate.d/nginx
十六、一键优化脚本示例
下面提供一个适用于 Debian 的基础高并发优化脚本。执行前建议先备份重要配置。
创建脚本:
nano debian-high-concurrency.sh
写入:
#!/usr/bin/env bash
set -e
echo "=== Debian high concurrency tuning start ==="
if [ "$(id -u)" -ne 0 ]; then
echo "Please run as root"
exit 1
fi
cat > /etc/sysctl.d/99-high-concurrency.conf <<'EOF'
fs.file-max = 2097152
fs.nr_open = 2097152
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 250000
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.core.optmem_max = 16777216
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_syn_retries = 3
net.ipv4.tcp_synack_retries = 3
net.ipv4.tcp_abort_on_overflow = 0
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_max_tw_buckets = 2000000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864
net.ipv4.tcp_max_orphans = 262144
net.ipv4.route.gc_timeout = 100
net.netfilter.nf_conntrack_max = 1048576
EOF
sysctl --system
cat > /etc/security/limits.d/99-high-concurrency.conf <<'EOF'
* soft nofile 1048576
* hard nofile 1048576
* soft nproc 65535
* hard nproc 65535
root soft nofile 1048576
root hard nofile 1048576
root soft nproc 65535
root hard nproc 65535
EOF
if ! grep -q "pam_limits.so" /etc/pam.d/common-session; then
echo "session required pam_limits.so" >> /etc/pam.d/common-session
fi
if ! grep -q "pam_limits.so" /etc/pam.d/common-session-noninteractive; then
echo "session required pam_limits.so" >> /etc/pam.d/common-session-noninteractive
fi
mkdir -p /etc/systemd/system/nginx.service.d
cat > /etc/systemd/system/nginx.service.d/override.conf <<'EOF'
[Service]
LimitNOFILE=1048576
LimitNPROC=65535
EOF
systemctl daemon-reload
echo "=== Done ==="
echo "Please relogin shell to make ulimit effective."
echo "If nginx installed, run: systemctl restart nginx"
执行:
chmod +x debian-high-concurrency.sh
sudo ./debian-high-concurrency.sh
如果已经安装 Nginx:
sudo systemctl restart nginx
验证:
ulimit -n
sysctl net.core.somaxconn
systemctl show nginx | grep -i LimitNOFILE
十七、高并发排查 checklist
当系统出现并发上不去、请求失败、延迟升高时,可以按照下面步骤排查。
1. 看系统负载
uptime
top
htop
重点关注:
- load average 是否明显高于 CPU 核数
- CPU 是否被打满
- 是否存在大量 iowait
- 是否有异常进程占用资源
2. 看内存是否不足
free -h
vmstat 1
如果 swap 使用严重,响应时间会明显上升。
3. 看连接状态
ss -s
ss -ant | awk 'NR>1 {++s[$1]} END {for(k in s) print k,s[k]}'
如果 CLOSE-WAIT 很多,通常是应用没有正确关闭连接。
如果 SYN-RECV 很多,可能是突发连接过高、SYN 队列不足或遭遇攻击。
如果 TIME-WAIT 很多,要关注短连接是否过多,是否可以使用 keepalive。
4. 看文件描述符
ulimit -n
cat /proc/sys/fs/file-nr
lsof | wc -l
查看某进程限制:
cat /proc/进程PID/limits
例如:
cat /proc/$(pidof nginx | awk '{print $1}')/limits
5. 看 Nginx 错误日志
sudo tail -f /var/log/nginx/error.log
常见错误:
worker_connections are not enough
Too many open files
connect() failed
upstream timed out
no live upstreams
这些错误分别对应不同问题,需要结合上下游服务分析。
6. 看后端应用
systemctl status myapp
journalctl -u myapp -f
如果后端服务响应慢,Nginx 再强也无法提升整体吞吐。
十八、生产环境注意事项
-
不要盲目套用参数
不同业务模型不一样。长连接、短连接、静态文件、动态 API、WebSocket、数据库代理的优化重点不同。
-
先压测,再上线
建议在测试环境中逐步增加并发,例如:
wrk -t4 -c500 -d60s http://test.example.com/ wrk -t8 -c2000 -d60s http://test.example.com/ wrk -t16 -c10000 -d120s http://test.example.com/ -
关注延迟,而不只看 QPS
高并发系统必须同时关注:
- QPS
- 平均延迟
- P95 延迟
- P99 延迟
- 错误率
- CPU 使用率
- 内存使用率
- 网络带宽
- 磁盘 I/O
-
高并发不是单机无限扩容
单机优化有上限。到一定规模后,应考虑:
- 多台服务器负载均衡
- CDN
- 数据库读写分离
- 缓存集群
- 消息队列
- 服务拆分
- 水平扩容
十九、推荐的最终落地顺序
建议按以下顺序实施:
- 备份配置文件
- 查看当前系统限制和连接状态
- 提升文件描述符限制
- 调整 systemd 服务限制
- 优化 sysctl 内核参数
- 优化 Nginx 配置
- 优化应用连接池与超时
- 加入缓存和限流策略
- 使用 wrk 或 hey 做压测
- 根据监控数据继续微调
备份命令示例:
sudo cp /etc/sysctl.conf /etc/sysctl.conf.bak.$(date +%F-%H%M%S)
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak.$(date +%F-%H%M%S)
二十、总结
Debian 高并发优化的关键不在于某一个“神奇参数”,而在于系统限制、内核网络栈、服务配置和业务架构的协同优化。对于常见 Web 服务而言,最基础也最有效的几个动作是:
- 提高
ulimit -n - 提高 systemd 的
LimitNOFILE - 调整
somaxconn、tcp_max_syn_backlog - 扩大本地端口范围
- 合理处理
TIME_WAIT - 优化 Nginx
worker_connections - 使用 keepalive 复用连接
- 控制日志 I/O
- 使用连接池、缓存、队列和限流
- 通过压测和监控验证效果
如果你的服务只是中小规模流量,上述配置已经足够支撑较高并发;如果是百万级连接或超高 QPS 场景,则需要进一步结合多机负载均衡、内核版本、网卡队列、CPU 亲和性、DPDK/eBPF、服务拆分和全链路压测进行更深入优化。