centos lnmp性能测试工具
导读:CentOS LNMP性能测试工具与用法 一、工具分类与适用场景 HTTP压测:ab(ApacheBench)、wrk、Siege、JMeter。适合评估Nginx吞吐、PHP-FPM动态处理能力、接口QPS与延迟分布。 数据库与系统基准...
CentOS LNMP性能测试工具与用法
一、工具分类与适用场景
- HTTP压测:ab(ApacheBench)、wrk、Siege、JMeter。适合评估Nginx吞吐、PHP-FPM动态处理能力、接口QPS与延迟分布。
- 数据库与系统基准:sysbench(CPU/内存/事务/文件IO/OLTP)、fio(磁盘IO)、netperf(网络带宽/延迟)。用于排除底层资源瓶颈。
- 应用与代码级分析:Xdebug、Blackfire.io,定位PHP热点函数与调用路径。
- 运行监控:top/htop、vmstat、iostat、ss、dstat、iftop、nmon;Nginx stub_status;Prometheus + Grafana;Zabbix;New Relic/Datadog。用于压测过程中的资源与组件指标观测与告警。
二、快速上手命令示例
- ab(快速检查QPS与延迟)
- 安装:
sudo yum install -y httpd-tools - 示例:
ab -n 10000 -c 200 http://your-domain.com/(-n 总请求数,-c 并发数)
- 安装:
- wrk(高并发、长连接、延迟分布)
- 安装:
git clone https://github.com/wg/wrk.git & & cd wrk & & make & & sudo cp wrk /usr/local/bin/ - 示例:
wrk -t12 -c400 -d30s --latency http://your-domain.com/(12线程、400并发、30秒)
- 安装:
- Siege(多URL、随机与循环压测)
- 安装:
sudo yum install -y siege - 示例:
siege -c200 -t60s -b http://your-domain.com/
- 安装:
- JMeter(图形化/复杂场景)
- 用法:在GUI中创建测试计划(线程组、HTTP请求、定时器、断言、监听器),导出JMX后在服务器用CLI运行:
jmeter -n -t test.jmx -l result.jtl
- 用法:在GUI中创建测试计划(线程组、HTTP请求、定时器、断言、监听器),导出JMX后在服务器用CLI运行:
- sysbench(数据库/系统基准)
- CPU:
sysbench cpu --threads=8 --time=60 run - 内存:
sysbench memory --threads=8 --time=60 run - 文件IO:
sysbench fileio prepare & & sysbench fileio --file-total-size=10G --file-test-mode=rndrw run - OLTP(需提前准备库表):
sysbench oltp_read_write --db-driver=mysql --mysql-host=127.0.0.1 --mysql-user=root --mysql-password=xxx --tables=10 --table-size=1000000 --threads=8 --time=300 run
- CPU:
- fio(磁盘IO)
- 随机读:
fio --name=randread --ioengine=libaio --rw=randread --bs=4k --size=1G --numjobs=4 --runtime=60 --time_based --filename=/tmp/fio.log
- 随机读:
- netperf(网络)
- 安装:
sudo yum install -y netperf - 示例:
netperf -H your_server_ip -t TCP_STREAM
- 安装:
三、压测前后监控要点
- Nginx:启用ngx_http_stub_status_module,配置示例:
location /nginx_status { stub_status on; access_log off; allow 127.0.0.1; deny all; }- 关键指标:Active connections、Reading、Writing、Waiting,观察连接是否触顶。
- 系统资源:
top/htop(进程CPU/内存)、vmstat 1(系统负载/内存/IO)、iostat -x 1(磁盘IO等待)、ss -s(连接数)、dstat -ta(综合资源)、iftop(带宽占用)、nmon(资源总览)。
- MySQL:
- 连接与慢查询:
SHOW STATUS LIKE 'Threads_connected';、SHOW STATUS LIKE 'Slow_queries'; - 实时负载:
SELECT COUNT(*) as connections, state FROM information_schema.processlist GROUP BY state; - 慢查询分析:
pt-query-digest /var/log/mysql/slow.log。
- 连接与慢查询:
- PHP-FPM:开启pm.status_path,通过HTTP或FastCGI方式抓取active/queued进程与请求耗时。
- 可视化与告警:Prometheus + Grafana采集Nginx/MySQL/PHP-FPM指标并出图;Zabbix配置触发器;New Relic/Datadog做应用性能观测。
四、结果判读与常见瓶颈
- 吞吐与延迟:关注Requests/sec与Latency(p50/p95/p99)。若吞吐低且p95/p99高,多为后端处理慢或排队;若错误率/超时升高,检查连接数上限与超时配置。
- 连接与队列:Nginx 的 worker_connections 与系统 文件描述符 过小会导致连接失败或排队;PHP-FPM 的 pm.max_children 不足会造成请求排队。
- 数据库:Threads_connected 接近上限、慢查询增多,需优化索引/SQL或提升连接上限与缓冲池。
- 磁盘与网络:
iostat的 await 高说明磁盘慢;iftop显示带宽打满则网络成为瓶颈。 - 定位方法:先用系统/组件监控确认瓶颈层,再针对该层调参或改写SQL/缓存/代码路径。
五、测试流程与注意事项
- 流程:准备接近生产的测试环境与数据集 → 明确目标指标(QPS、p95、错误率) → 设计场景(静态资源、动态接口、登录/下单等) → 执行基线压测 → 监控与瓶颈定位 → 调优(Nginx/PHP-FPM/MySQL/系统)→ 回归压测验证收益。
- 注意事项:避免对生产造成影响(使用隔离环境与限流);每次只变更一个变量便于归因;压测时间足够长以覆盖缓存预热与抖动;保留原始日志与报表便于复盘。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos lnmp性能测试工具
本文地址: https://pptw.com/jishu/754391.html
