1. 明确测试目标与核心指标
在开展Debian LAMP(Linux+Apache+MySQL+PHP)性能测试前,需先明确测试目标(如评估服务器响应时间、并发处理能力、吞吐量,或定位性能瓶颈),并确定关键性能指标:
2. 准备测试环境
sudo apt update && sudo apt upgrade -y更新),关闭不必要的服务(如蓝牙、打印服务),避免干扰测试结果;sudo apt install apache2)、MySQL(sudo apt install mariadb-server)、PHP(sudo apt install php libapache2-mod-php php-mysql),优化基础配置(如Apache的KeepAlive On、MySQL的innodb_buffer_pool_size调整为物理内存的50%-70%);ab、siege、sysbench):sudo apt install apache2-utils siege sysbench htop -y
3. 选择性能测试工具
根据测试场景选择合适的工具,覆盖从Web服务器到数据库的全栈性能评估:
4. 执行性能测试
ab测试首页并发处理能力,命令示例:ab -n 1000 -c 100 http://localhost/
参数说明:-n 1000表示总请求数(1000次),-c 100表示并发数(100个并发用户)。结果关注Requests per second(吞吐量)、Time per request(平均响应时间)。Siege进行1分钟压力测试,命令示例:siege -c 200 -t 1m http://localhost/
参数说明:-c 200表示并发数(200个),-t 1m表示测试时长(1分钟)。结果关注Transactions(总请求数)、Availability(可用性)、Response Time(响应时间)。sysbench测试MySQL查询性能,命令示例:sysbench oltp_read_write --db-driver=mysql --mysql-host=localhost --mysql-user=root --mysql-password=your_password --mysql-db=test --tables=10 --table-size=1000000 --threads=8 --time=60 run
参数说明:--oltp-read-write表示测试类型(读写混合),--tables=10表示创建10个测试表,--table-size=1000000表示每个表100万条数据,--threads=8表示并发线程数(8个)。结果关注transactions per second(TPS,每秒事务数)、query processing speed(查询处理速度)。stress工具模拟CPU、内存压力,命令示例:stress --cpu 4 --io 2 --vm 2 --vm-bytes 1G --timeout 30s
参数说明:--cpu 4表示占用4个CPU核心,--io 2表示启动2个I/O线程,--vm 2表示启动2个内存分配线程,--vm-bytes 1G表示每个内存线程分配1GB内存,--timeout 30s表示测试持续30秒。测试时通过htop监控资源使用率。5. 监控系统资源使用
测试过程中,实时监控系统资源使用情况,定位性能瓶颈:
htop(需安装:sudo apt install htop)查看CPU、内存、进程占用情况,按F6排序(如按CPU使用率排序);vmstat(每秒更新一次)查看虚拟内存、进程、CPU使用情况:vmstat 1
关注r(运行队列长度,若持续大于CPU核心数则表示CPU瓶颈)、b(阻塞进程数)、us(用户态CPU使用率)、sy(内核态CPU使用率);iostat(需安装sysstat:sudo apt install sysstat)查看磁盘读写情况:iostat -x 1
关注%util(磁盘利用率,若持续大于70%则表示磁盘瓶颈)、await(平均I/O等待时间)。6. 分析测试结果与优化建议
Requests per second低且响应时间长,可能是Web服务器(Apache)配置问题(如MaxClients过小)或网络带宽不足;innodb_buffer_pool_size过小);KeepAlive(开启可减少连接开销)、MaxClients(根据内存调整,如每GB内存设置50-100个客户端)、MPM(多处理模块,如prefork适合高并发连接,worker适合高并发请求);EXPLAIN分析慢查询)、优化innodb_buffer_pool_size(设置为物理内存的50%-70%)、定期执行OPTIMIZE TABLE整理表碎片;opcache,修改php.ini中的opcache.enable=1)、优化代码(如减少循环嵌套、使用缓存机制);/etc/sysctl.conf中的net.core.somaxconn增加TCP连接队列长度)、升级硬件(如增加内存、使用SSD磁盘)。