插件窝 干货文章 LNMP如何进行性能测试

LNMP如何进行性能测试

测试 性能 MySQL 优化 280    来源:    2025-05-05

LNMP性能测试指南

LNMP(Linux + Nginx + MySQL + PHP)架构的性能测试需要从多个层面进行评估。以下是一套完整的LNMP性能测试方案:

1. 测试前准备

环境确认

  • 确保测试环境与生产环境配置一致(硬件、软件版本、配置参数)
  • 关闭不必要的服务和进程
  • 记录系统初始状态(内存、CPU、磁盘、网络使用情况)

测试工具准备

  • Web压力测试工具:ab(Apache Benchmark)、wrk、JMeter、Locust
  • 数据库基准测试工具:sysbench、mysqlslap
  • 系统监控工具:top、htop、vmstat、dstat、sar、Prometheus + Grafana

2. 分层性能测试

2.1 Nginx性能测试

测试方法:

# 使用ab测试静态文件
ab -n 10000 -c 100 http://yourdomain.com/test.html

# 使用wrk测试(更高性能)
wrk -t12 -c400 -d30s http://yourdomain.com

关键指标: - 每秒请求数(RPS/QPS) - 请求延迟(平均、最大、P95/P99) - 错误率 - 服务器资源占用(CPU、内存、网络)

2.2 PHP-FPM性能测试

测试方法:

# 测试PHP脚本
ab -n 5000 -c 100 http://yourdomain.com/test.php

# 调整PHP-FPM配置后测试
/etc/init.d/php-fpm restart

关键配置参数: - pm.max_children - pm.start_servers - pm.min_spare_servers - pm.max_spare_servers - pm.max_requests

2.3 MySQL性能测试

使用sysbench测试:

# 准备测试数据
sysbench oltp_read_write --db-driver=mysql --mysql-host=localhost \
--mysql-port=3306 --mysql-user=root --mysql-password=yourpassword \
--mysql-db=sbtest --tables=10 --table-size=100000 prepare

# 运行测试
sysbench oltp_read_write --db-driver=mysql --mysql-host=localhost \
--mysql-port=3306 --mysql-user=root --mysql-password=yourpassword \
--mysql-db=sbtest --tables=10 --table-size=100000 \
--threads=16 --time=300 --report-interval=10 run

关键指标: - 每秒事务数(TPS) - 查询延迟 - 锁等待时间 - 缓存命中率

3. 综合性能测试

3.1 模拟真实业务场景

  • 使用JMeter或Locust创建接近真实用户行为的测试脚本
  • 包含静态资源、动态页面、API调用和数据库操作

3.2 压力测试与负载测试

  • 逐步增加并发用户数,观察系统表现
  • 找出系统瓶颈和最大承载能力

4. 性能分析与优化

4.1 常见瓶颈点

  • Nginx: worker_connections限制、缓冲区设置
  • PHP-FPM: 进程数不足、脚本执行效率低
  • MySQL: 查询优化、索引缺失、连接数限制
  • 系统: 文件描述符限制、TCP连接参数

4.2 优化建议

Nginx优化:

worker_processes auto;
worker_connections 10240;
keepalive_timeout 65;
gzip on;

PHP-FPM优化:

pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20

MySQL优化:

innodb_buffer_pool_size = 4G
innodb_log_file_size = 256M
query_cache_size = 64M
max_connections = 200

5. 监控与报告

  • 使用Grafana展示测试期间的各项指标
  • 记录测试配置、环境参数和测试结果
  • 对比优化前后的性能数据

6. 持续性能测试

  • 将性能测试集成到CI/CD流程
  • 定期进行回归性能测试
  • 监控生产环境性能指标

通过以上全面的性能测试,您可以全面了解LNMP架构的性能表现,找出瓶颈并进行针对性优化,确保系统在高负载下稳定运行。