centos,24核32G
ab压力测试工具,1000并发客户端请求页面5万次
lnmp环境下,压力测试静态html处理能力达到14000次每秒
(这个静态处理能力我也想提升,主要是服务器资源还剩余的多)
ab -c 1000 -n 50000 -k http://127.0.0.1/index.html
Concurrency Level: 1000
Time taken for tests: 3.387 seconds
Complete requests: 50000
Failed requests: 0
Write errors: 0
Keep-Alive requests: 50000
Total transferred: 23341512 bytes
HTML transferred: 11619792 bytes
Requests per second: 14764.11 [#/sec] (mean)
Time per request: 67.732 [ms] (mean)
Time per request: 0.068 [ms] (mean, across all concurrent requests)
Transfer rate: 6730.79 [Kbytes/sec] received
================================
但是测试一个很简单的PHP页面(只有echo语句)才3000次每秒
Concurrency Level: 1000
Time taken for tests: 12.982 seconds
Complete requests: 50000
Failed requests: 0
Write errors: 0
Keep-Alive requests: 0
Total transferred: 13250265 bytes
HTML transferred: 3450069 bytes
Requests per second: 3851.56 [#/sec] (mean)
Time per request: 259.635 [ms] (mean)
Time per request: 0.260 [ms] (mean, across all concurrent requests)
Transfer rate: 996.76 [Kbytes/sec] received
php-fpm的状态页大概如下:最大800的php-fpm进程实际最高用了不到30的进程
在压力测试的期间,top命令查看机器的cpu和内存,cpu占用不到8%,内存占用不到20%
listen queue: 0 max listen queue: 0 listen queue len: 0 idle processes: 355 active processes: 14 total processes: 369 max active processes: 269 max children reached: 0 slow requests: 0
php-fpm开的进程是800,但是压力测试的时候观察php-fpm状态页显示的活动进程只有300左右,请求完成都是200状态,但是秒处理能力太弱了,感觉php-fpm没有完全启动并发处理,按道理应该是在有请求的时候应该全部启动运行,有人知道这个怎么提高php处理能力么??
我想要压榨服务器的性能啊,这感觉没有跑起来啊。。有大神知道的给我指导下拉,,谢谢。
php-fpm进程数并不是开得越多越好。php-fpm 进程同一时间只能处理一个请求。
引用来自“mickelfeng”的评论
php-fpm进程数并不是开得越多越好。php-fpm 进程同一时间只能处理一个请求。
php-fpm是同时只能处理一个请求,所以我才多开,希望让php-fpm同时可以处理800个请求,但是现在看来在并发的情况下,这800个都没有用到,大部分是空闲状态的,反而正常的请求还是在进行一个排队处理,怎么利用起来呢?
start_servers = 500
max_children = 800
request_terminate_timeout = 0
max_requests = 0
引用来自“取名字总是失败”的评论
start_servers = 500
max_children = 800
request_terminate_timeout = 0
max_requests = 0
差不多是按你这样的设置的哈
pm = dynamic
pm.max_children = 800
pm.start_servers = 300
pm.min_spare_servers = 100
pm.max_spare_servers = 800
request_terminate_timeout = 100
request_slowlog_timeout = 0
start_servers = min_spare_servers + (max_spare_servers - min_spare_servers) / 2
引用来自“取名字总是失败”的评论
start_servers = 500
max_children = 800
request_terminate_timeout = 0
max_requests = 0
引用来自“玖伍陈海天”的评论
差不多是按你这样的设置的哈
pm = dynamic
pm.max_children = 800
pm.start_servers = 300
pm.min_spare_servers = 100
pm.max_spare_servers = 800
request_terminate_timeout = 100
request_slowlog_timeout = 0
pm = static
pm.min_spare_servers = 0