最近在自己的台式机上搭了个lnmp,想用压力压一压,看看结果怎么样。


由于nginx只是个静态web服务器,并发能力超强,因此lnmp的性能瓶颈在于php的处理能力,即php-fpm。


硬件


  1. CPU AMD Phenom(tm) II X4 945

  2. 内存 4G x 4

  3. 硬盘 西数绿盘 7200rpm

  4. 网卡 realtek 8169 千兆自适应


软件版本


  1. nginx 1.4.0

  2. mysql 5.5.31

  3. php 5.4.14


重新编译的rpm包有


  1. nginx

  2. mysql

  3. php

  4. php-pecl-zendopcache

  5. libevent


lnmp的优化手段主要有


内核参数
文件句柄数
php缓存
nginx编译
nginx pagespeed
nginx缓存
nginx压缩
nginx CPU绑定


采用autobench ,模拟300至1000个并发,每次并发持续2分钟,之后并发递增100,每个连接5次请求。

命令


  1. 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


结果


连接数     请求速度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


  
    First program
  
  
    
  


0-100求和