最近在自己的台式机上搭了个lnmp,想用压力压一压,看看结果怎么样。
由于nginx只是个静态web服务器,并发能力超强,因此lnmp的性能瓶颈在于php的处理能力,即php-fpm。
硬件
-
CPU AMD Phenom(tm) II X4 945
-
内存 4G x 4
-
硬盘 西数绿盘 7200rpm
-
网卡 realtek 8169 千兆自适应
软件版本
-
nginx 1.4.0
-
mysql 5.5.31
-
php 5.4.14
重新编译的rpm包有
-
nginx
-
mysql
-
php
-
php-pecl-zendopcache
-
libevent
lnmp的优化手段主要有
1
2
3
4
5
6
7
8
|
内核参数
文件句柄数
php缓存
nginx编译
nginx pagespeed
nginx缓存
nginx压缩
nginx CPU绑定
|
采用autobench ,模拟300至1000个并发,每次并发持续2分钟,之后并发递增100,每个连接5次请求。
命令
-
autobench --single_host --host1 192.168.1.101 --port1 80 --uri1 /phpinfo.php --low_rate 300 --high_rate 1000 --rate_step 100 --num_call 5 --const_test_time 120 --timeout 2 --file result.tsv
结果
1
2
3
4
5
6
7
8
9
|
连接数 请求速度req/s 连接速度conn/s 总连接数
300
291.4
287.9
1500
400
374.4
383.9
2000
500
384
394.3
2500
600
389.9
399.2
3000
700
385.7
397.2
3500
800
390.8
399.7
4000
900
389.3
399.1
4500
1000
379.8
391.9
5000
|
结果分析,
并发在300开始,php处理能力逐渐加强,在800时达到最高峰390.8req/s,之后逐渐下降,可见,php整体处理请求能力在每秒380左右,理论上全天访问量约3千万(380x60x60x24=32832000).
根据二八原理,80%的请求完成在20%的时间段里,20%的时间为4.8小时,可承受的请求数为650万(380x60x60x4.8=6566400),换算成实际全天访问量就是820万(6566400/0.8=8208000)。
根据大牛张宴的博客,他能达到700req/s(理论上折合日访问量6千万),不过他是全程编译,而我这里全程是rpm,只对部分核心软件包进行了srpm重新编译,硬件也只是普通台式机。
总之,还有很大的优化空间,继续加油!
update 2015-10-12
由于phpinfo 页面比较大,一次获取会有几十k的数据,连接数一多,网卡会成为瓶颈。
建议同时使用别的页面进行测试,比如hello world,或者计算1-100求和。
hello world
1
2
3
4
5
6
7
8
9
10
|
<
html
>
<
head
>
<
title
>First program</
title
>
</
head
>
<
body
>
<?
php
echo "hello, world\n";
?>
</
body
>
</
html
>
|
0-100求和
1
2
3
4
5
6
7
|
<?php
$i
=1;
$sum
=0;
while
(
$i
<=100) {
$sum
=
$sum
+
$i
;
$i
++;
}
echo
$sum
;
?>
|