- 首页 >
- 问答 >
-
云计算 >
- Debian Nginx服务器性能测试方法
Debian Nginx服务器性能测试方法
小樊
37
2025-12-27 16:31:42
Debian Nginx 服务器性能测试方法
一 测试准备与基线
- 部署稳定的 LNMP 环境:安装并启动 Nginx、MariaDB/MySQL、PHP-FPM,确保站点可正常访问;Nginx 默认站点配置中,PHP 解析通常使用 Unix Socket(如:/var/run/php/php7.x-fpm.sock)。为后续压测准备一个接近真实业务的测试端点(如 /info.php 或静态大文件)。
- 安装常用压测与系统工具:
- HTTP 压测:ab、wrk
- 系统资源:sysbench、fio、netperf
示例:sudo apt install -y apache2-utils wrk sysbench fio netperf
- 建立监控基线:
- 启用 Nginx stub_status 获取连接与请求吞吐;
- 实时资源监控用 top/htop、vmstat、iostat、ss;
- 日志分析关注 $request_time、$upstream_response_time。
以上准备可确保压测覆盖 HTTP 层与系统层,并能快速定位瓶颈。
二 HTTP 层基准测试
- 静态资源测试(推荐先用纯静态文件建立上限):
- ab:ab -n 10000 -c 200 http://your_server_ip/static/big.jpg
- wrk:wrk -t12 -c400 -d30s http://your_server_ip/static/big.jpg
- 动态 PHP 测试(更接近真实业务):
- ab:ab -n 5000 -c 100 http://your_server_ip/info.php
- wrk:wrk -t12 -c400 -d30s http://your_server_ip/info.php
- 关键指标解读:
- Requests per second(QPS)、Time per request(平均响应时间)、Transfer rate;
- wrk 的 Latency(延迟分布) 与 Requests/sec;
- 关注 Failed requests/非2xx比例 与错误日志。
- 建议流程:从低并发逐步爬坡(如 c=50→200→400),每个阶梯保持 30–60 秒,观察指标拐点与错误率变化。
三 系统资源与网络专项测试
- CPU:sysbench cpu --threads=4 --events=10000 --time=60 run
- 内存:sysbench memory --threads=4 --time=60 run
- 磁盘 I/O(随机读,4KB,4 并发,持续 60 秒):
fio --name=randread --ioengine=libaio --rw=randread --bs=4k --size=1G --numjobs=4 --runtime=60 --time_based --filename=/tmp/fio.log
- 网络带宽(TCP_STREAM):netperf -H your_server_ip -t TCP_STREAM
这些测试帮助判断瓶颈是在 CPU、内存、磁盘 I/O 还是 网络链路,避免把应用层问题误判为 Nginx 配置问题。
四 监控与结果分析
- Nginx 实时指标:启用 stub_status,访问 /nginx_status 查看 Active connections、accepts/handled/requests、Reading/Writing/Waiting;配合 access.log 中 $request_time、$upstream_response_time 做慢请求排查(如 awk ‘$11>1 {print}’ 过滤超过 1 秒 的请求)。
- 系统监控:
- top/htop(进程资源)、vmstat(内存与 CPU)、iostat(磁盘吞吐与延迟)、ss(连接状态);
- 压测时观察 CPU 利用率、load、iowait、上下文切换、TCP 连接队列 是否异常。
- 可视化与告警(可选):部署 Prometheus + Grafana + nginx-prometheus-exporter(默认 :9113),导入 Nginx 官方仪表板(ID:12708);配置 Alertmanager 规则,如:
- 5xx 错误率 5 分钟窗口超过 5%:
expr: rate(nginx_http_requests_total{status=~“5…”}[5m]) / rate(nginx_http_requests_total[5m]) > 0.05
- 活跃连接数超过阈值(如 1000):
expr: nginx_connections_active > 1000
通过监控与告警,可以把压测结果与线上观测闭环,快速发现回归与异常。
五 常见瓶颈与优化方向
- Nginx:
- worker_processes 设为 auto(CPU 核心数);
- worker_connections 适度增大(结合 ulimit -n);
- 开启 gzip、长连接复用(keepalive);
- 静态资源使用 sendfile on;关闭不必要的 server_tokens。
- PHP-FPM:
- 合理设置 pm.max_children(依据单进程内存×可用内存);
- 启用 opcache(如:opcache.enable=1、opcache.memory_consumption=256、opcache.max_accelerated_files=10000;PHP 8.x 可开启 opcache.jit 提升性能)。
- 系统与网络:
- 提升文件描述符限制(如 ulimit -n 65535);
- 优化内核网络参数(如 net.core.somaxconn、net.ipv4.ip_local_port_range、net.ipv4.tcp_fin_timeout、net.core.netdev_max_backlog 等)。
- 数据库:
- 调整 innodb_buffer_pool_size(常见为内存的 50%–80%);
- 结合慢查询日志与 pt-query-digest 优化 SQL。
优化应基于压测与监控数据逐步验证,避免一次性大幅改动导致新的不稳定。