跨境独立站压力测试服务器性能瓶颈排查
做跨境独立站最怕的就是流量一来网站直接挂掉。
压力测试可以帮你提前发现服务器的短板,避免大促时掉链子。
本文会按零基础能看懂的方式,从准备工具、执行压测到分析瓶颈,一步步讲清楚。
压测前必须做的几件事
- 准备一台测试机 – 最好跟线上环境一样,或者用低配仿照。如果只有一台服务器,可以用另一台云服务器当压测客户端,避免压测工具本身占用资源。
- 安装压测工具 – 最通用的是 ab(Apache Bench),大多数系统自带。如果没有,执行:
sudo apt install apache2-utils # Ubuntu/Debian
sudo yum install httpd-tools # CentOS/RHEL
高级一点可以装 wrk:sudo apt install wrk。
- 确认监控工具就绪 – 至少会用
top和free -h。建议再装iostat(sudo apt install sysstat)、netstat或ss。 - 设置安全防护 – 压测前关闭 CDN 和云防火墙的 CC 防护,否则结果不准。建议在测试服务器上单独开一个测试域名或 IP,别直接压线上生产环境。
用 ab 对独立站做一次基础压力测试
先跑一个简单的并发场景,看服务器能撑多少请求。
以测试首页为例:
ab -n 1000 -c 50 https://yourdomain.com/
-n 1000:总共发出 1000 个请求。-c 50:模拟 50 个并发用户。
压测完成后仔细看这几项:
- Requests per second:每秒请求数,值越高越好。
- Time per request(mean):每个请求平均用时(单位毫秒),越小越快。
- Failed requests:失败数必须为 0,有失败就要排查。
- 99%响应时间:接近最慢用户的体验。
如果失败数很多或响应时间超高,说明服务器已经开始扛不住。
这时把并发数降到 20 再测一次,逐步往上加,找到拐点。
用 top 和 iostat 定位瓶颈在哪
压测期间另开一个 SSH 会话,同时运行监控命令。
最常用的组合:
top -bn1 | head -20
看 %CPU 是否接近 100%?如果 CPU 用满,可能是 PHP-FPM 或 Nginx 进程太多。
看 %MEM 占用是否过高?内存不足会导致 swap 频繁,可以用 free -h 确认。
磁盘 I/O 问题用 iostat 看:
iostat -x 1 3
重点关注 %util(磁盘利用率)和 await(平均等待时间)。
如果 %util 超过 90% 且 await 较大,说明磁盘是瓶颈。
跨境独立站图片多的场景尤其常见。
网络连接数也很重要。
用 ss -s 看当前连接状态,如果 timewait 很多,可以调整内核参数:
net.ipv4.tcp_tw_reuse = 1
压测时最容易踩的坑
- 并发数设太高 – 新手喜欢直接并发几百,结果服务器直接 down 机,反而看不到正常状态。建议从 10 开始,每次翻倍,找到临界点。
- 忘记清空 PHP 缓存 – 如果网站用了 Redis 或 OPcache,第一次压测可能很快,但后续会因为缓存失效而变慢。压测前最好重启 PHP-FPM 清空缓存:
sudo systemctl restart php8.1-fpm。 - 数据库连接池不够 – 可以用
SHOW PROCESSLIST;查看当前连接数,如果压测时连接数飙升,需要调大max_connections或增加连接池。 - 测试时间太短 – 压测至少跑 1 分钟,短测试无法暴露慢查询或内存泄漏。用 ab 时可以加
-t 60指定持续时间。 - 忽略日志错误 – 压测后一定要看 Nginx 错误日志(
/var/log/nginx/error.log)和 PHP 慢日志,里面经常藏着真实原因。
高频问题与简易排查方向
Q:压测时大量 connection refused 是什么原因?
A:通常是 Nginx 或 Apache 的 worker 数不够,或者系统最大文件打开数限制太低。可以用 ulimit -n 查看,调整 /etc/security/limits.conf。
Q:每秒请求数很低,但 CPU 和内存都没跑满?
A:很可能是网络带宽或数据库锁导致。先用 ping 检查延迟;再检查数据库是否有慢查询命中。
Q:跨境独立站是 WordPress,应该重点看什么?
A:重点看 PHP-FPM 进程数和 MySQL 连接数。建议安装一个页面缓存插件(如 WP Rocket 或 W3 Total Cache),并启用 Redis 对象缓存。
根据压测结果优化并再次验证
找到瓶颈后针对性调整,比如:
- CPU 高 → 升级实例或开启页面静态化。
- 内存高 → 加大 PHP memory_limit 或减少并发进程数。
- 磁盘 I/O 高 → 上 SSD 云硬盘,或把静态资源分离到对象存储。
- 数据库查询慢 → 加索引,或者把动态请求做缓存。
每改完一个参数就用同样的压测条件再跑一次,观察 Requests per second 是否提升,响应时间是否下降。
多次迭代直到当前配置下的性能稳定在可接受范围。
如果你正在处理跨境独立站的性能问题,建议先按本文的步骤压测一次,把瓶颈的数据记录下来,然后逐项优化。
遇到奇怪报错时多翻 error.log 和 slow.log,大多问题都能找到线索。