-
修改内核参数
vim /etc/sysctl.conf
# 最大文件句柄数(每个连接对应一个文件句柄)
fs.file-max = 1000000
# 网络连接队列大小(避免连接被丢弃)
net.core.somaxconn = 65535
# TCP 连接最大积压队列(SYN 队列,应对 SYN 洪水攻击)
net.ipv4.tcp_max_syn_backlog = 65535
# 允许 TIME_WAIT 状态的连接被快速复用(减少连接等待时间)
net.ipv4.tcp_tw_reuse = 1
# 快速回收 TIME_WAIT 连接(默认 60s,缩短至 30s)
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
# 最大 TCP 连接数
net.ipv4.tcp_max_tw_buckets = 5000
sysctl -p
-
修改进程数限制
/etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
验证是否生效(需重启)
ulimit -n
-
压测工具-ab
yum -y install httpd-tools
| 参数 |
含义 |
示例 |
| -n |
总请求数(需 ≥ 并发数 `-c`) |
-n 10000(共发送 10000 个请求) |
| -c |
并发数 |
-c 1000(1000 个并发请求) |
| -t |
压测持续时间(秒,与 -n 二选一) |
-t 60(持续压测 60 秒) |
| -s |
超时时间(秒,默认 30 秒) |
-s 10(超过 10 秒未响应视为失败) |
| -H |
添加请求头(如模拟浏览器缓存、Gzip) |
-H "Accept-Encoding: gzip"(启用 Gzip) |
| -v 2 |
输出响应头(用于查看 `X-Cache` 等信息) |
-v 2 |
实例:
| 指标名称 |
含义 |
优化目标 |
| Requests per second |
QPS(每秒处理请求数) |
优化后 > 优化前 |
| Time per request |
平均响应时间(ms,所有并发请求的平均值) |
优化后 < 优化前 |
| Failed requests |
失败请求数(含连接超时、5xx 错误等) |
优化后 = 0(或显著降低) |
| Content-Length |
响应体大小(字节,验证 Gzip 压缩效果) |
优化后 < 优化前 |
| X-Cache |
响应头,缓存状态(HIT/MISS,验证缓存效果) |
优化后 HIT 占比 > 90% |