CentOS Apache性能测试指南
在CentOS系统上对Apache服务器进行性能测试,需通过基准测试(评估基础性能)、负载测试(模拟正常负载)、压力测试(验证极限承载能力)三个核心阶段,结合监控工具定位瓶颈。以下是具体方法:
测试前需确保环境与生产一致(如Apache版本、模块配置、服务器规格),并关闭不必要的服务以避免干扰。同时,安装sysbench工具用于系统基准测试,命令如下:
yum install -y sysbench
通过sysbench测试CPU、内存、磁盘I/O等基础性能,为后续Apache测试提供参考:
sysbench cpu --cpu-max-prime=20000 --threads=4 run
结果关注events per second(每秒事件数),反映CPU计算能力。sysbench memory --memory-block-size=1m --memory-total-size=10G run
关注throughput(吞吐量,MB/s),体现内存读写速度。sysbench fileio --file-total-size=5G prepare # 准备测试文件
sysbench fileio --file-total-size=5G --file-test-mode=rndrw --time=60 --threads=4 run # 随机读写测试
sysbench fileio --file-total-size=5G cleanup # 清理测试文件
关注read IOPS(读IOPS)、write IOPS(写IOPS),反映磁盘性能。ab是Apache自带的轻量级压力测试工具,适合快速评估Apache的基础性能(如响应时间、吞吐量)。
yum install -y httpd-tools
ab -n 1000 -c 100 http://your-server-ip/
参数说明:
-n:总请求数(如1000次);-c:并发数(如100个并发);-t:测试最大时长(秒,可选);-p:POST数据文件(如-p postdata.json);-T:POST数据的Content-Type(如-T application/json)。postdata.json):ab -n 500 -c 100 -p postdata.json -T application/json http://your-server-ip/api/login
ab -n 1000 -c 50 https://your-server-ip/
http_load可模拟多个并发用户访问多个URL,适合测试复杂场景(如多个页面的负载)。
wget http://www.acme.com/software/http_load/http_load-12mar2006.tar.gz
tar xzvf http_load-12mar2006.tar.gz
cd http_load-12mar2006/
sudo make && sudo make install
http_load -parallel 10 -seconds 10 test.txt # 10个并发,持续10秒
test.txt内容:每行一个URL):http_load -parallel 20 -seconds 30 urls.txt
Requests per second(每秒请求数)、Fetches per second(成功请求数/秒)。httperf能测试Apache的最大服务量、发现潜在问题(如连接泄漏、响应延迟),适合高级性能分析。
yum install -y httperf
httperf --hog --server=your-server-ip --uri=/ --num-conns=10000 --wsess=10,10,0.1
参数说明:
--hog:独占系统资源(避免其他进程干扰);--server:目标服务器IP;--uri:测试路径(如/);--num-conns:总连接数(如10000);--wsess:会话模式(10,10,0.1表示10个会话,每个会话10次请求,间隔0.1秒)。Connection rate(连接建立速率)、Reply rate(响应速率)、Latency(延迟)。测试期间需实时监控服务器资源使用情况,定位性能瓶颈(如CPU过载、内存不足、磁盘I/O瓶颈):
top # 查看CPU、内存占用TOP进程
htop # 更直观的进程监控(需安装:yum install -y htop)
mod_status模块(默认启用),查看Apache当前连接、请求处理情况:
/etc/httpd/conf/httpd.conf),确保有以下内容:<Location "/server-status">
SetHandler server-status
Require ip 127.0.0.1 # 仅允许本地访问(生产环境可调整为特定IP)
</Location>
ExtendedStatus On
systemctl restart httpd
curl http://localhost/server-status
结果关注BusyWorkers(忙碌工作进程数)、IdleWorkers(空闲工作进程数)、Requests/sec(每秒请求数)。MaxRequestWorkers参数)。