开发者社区> 问答> 正文

用PTS测试不同环境下的PHP执行速度---结果让人吃惊

这是我在PTS板块发的一份文章,转过看分享一下

前段时间写过我用PTS测试我公司的ECS服务(centos 6 x64  512M内存)性能。
具体的测试过程,请见:http://bbs.aliyun.com/read/167183.html?spm=5176.7189909.0.0.mn88Qd
我当时用这种方法共测试了三个环境: PHP都为5.3.3   Nginx为1.6    apache为2.2.15,测试的页面都是phpinfo页面。

  • 环境1:Nginx1.6+phpfpm  (这种环境很多人称为LNMP)      
  • 环境2:apache在perfork模式+php(这种环境很多人称为LAMP,传统的LAMP或LNAMP集成环境中的Apache都采用这种模式安装Apache)    
  • 环境3:apache在worker模式+phpfpm(这种环境配置的人很少,我开发的“Linux管理大师”采用这种模式配置apache)
通过对上面三种WEB环境的测试,结果让我比较吃惊。环境3(apache在worker模式+phpfpm)的结果和LNMP环境相比不相上下,甚至比LNMP环境还有优势!但很多人从传统的思维是LNMP速度最快,最省资源。这与我原来设想的结果是不一样的!

好了,闲话不多话,我来上干货!各位看结果:



从结果分析:
  1. 粗看可能是觉得apacheprefork模式TPS和RT最小,但不要这样下结论,因为这种环境下出现了请求不成功。
  2. TPS:apache worker模式下TPS比Nginx快0.02
  3. RT:apache worker模式下比Nginx慢一点。
  4. ECSCPU:apache worker模式下比Nginx占用CPU少一点

各位是否有点不相信呢?Apache换种工作模式后,性能真强劲啊!


在此普及一些专业的术语:(以下都是我自己从字面分析的结果,非官方解释)
  • TPS:每秒传送的页面数量,这个应是越大越好。
  • RT:页面响应时间(我不道这个是所有页面的值还是最高值),这个值应越小越好。
  • ECSCPU:这是指ECS主机的CPU使用率,这个值应越小越好。

好了,不多说闲话了,继续上测试结果图
TPS结果



能看到apache在perfork模式下有异常页面。 apache在perfork模式下有异常页面,所以不把测试结果图放出来了。如果各位有兴趣想看看结果图,可以到:http://bbs.aliyun.com/read/167452.html?spm=0.0.0.0.nnIxXI    查看我记录的两种Apache工作模式的记录。

响应时间

因apache在perfork模式下有异常页面,所以不把测试结果图放出来了。 如果各位有兴趣想看看结果图,可以到:http://bbs.aliyun.com/read/167452.html?spm=0.0.0.0.nnIxXI    查看我记录的两种Apache工作模式的记录。




请求状态


因apache在perfork模式下有异常页面,所以不把测试结果图放出来了。 如果各位有兴趣想看看结果图,可以到:http://bbs.aliyun.com/read/167452.html?spm=0.0.0.0.nnIxXI    查看我记录的两种Apache工作模式的记录。

ECS--CPU
因apache在perfork模式下有异常页面,所以不把测试结果图放出来了。 如果各位有兴趣想看看结果图,可以到:http://bbs.aliyun.com/read/167452.html?spm=0.0.0.0.nnIxXI    查看我记录的两种Apache工作模式的记录。


能看到在worker模式下的apache占用CPU比Nginx稍微平滑一些。

ECS--磁盘IO
因apache在perfork模式下有异常页面,所以不把测试结果图放出来了。 如果各位有兴趣想看看结果图,可以到:http://bbs.aliyun.com/read/167452.html?spm=0.0.0.0.nnIxXI    查看我记录的两种Apache工作模式的记录。


我不知为什么 worker模式下的apache,没有磁盘写入(我设置apache写日志了)

总结:
从结果来看,我个人感觉 worker模式下的apache比较适合阿里云的ECS主机。

试分析原因:
我技术不是很强,只是评我自己的理解,简单的分析一下原因:
如果各位对两种Apache工作模式有兴趣,可以到 http://bbs.aliyun.com/read/167452.html?spm=0.0.0.0.nnIxXI  看我的测试结果和相关定义。
  • 先来说一下perfork模式的apache与PHP工作方式:这种模式是将PHP编译成APACHE一个模块,当每增加一个Apache线程时,都会加载PHP的模块。如果有20个Apache线程,就会重复加载20个PHP模块,这样会占用很多资源。我的ECS主机配置只有512M内存,当然不够用啊。
  • 再来说一下worker模式的apache与PHP工作方式:这种方式下的PHP运行方式,是和NGINX一样的,Apache调用PHP-FPM来执行PHP程序。这样占用资源要比perfork模式的apache省很多资源。


以上只是我自己测试和自己的分析结果,只是抛砖引玉,欢迎各位交流

Linux管理大师下载地址:   http://bbs.aliyun.com/read/164988.html?spm=0.0.0.0.nnIxXI    或参见:linux.its365.com.cn  

展开
收起
bendchen 2014-08-18 13:31:31 9283 0
6 条回答
写回答
取消 提交回答
  • 不顶不舒服斯基
    2014-08-31 23:43:31
    赞同 展开评论 打赏
  • 分析得够全面。
    2014-08-19 13:27:32
    赞同 展开评论 打赏
  • Re用PTS测试不同环境下的PHP执行速度结果让人吃惊
    先收藏了,再看。
    2014-08-19 13:13:43
    赞同 展开评论 打赏
  • Re用PTS测试不同环境下的PHP执行速度结果让人吃惊
    worker模式有没有什么兼容问题?
    2014-08-19 13:00:08
    赞同 展开评论 打赏
  • 神贴收藏!
    2014-08-18 16:33:41
    赞同 展开评论 打赏


  • PS:“免费”网站自动备份工具,多备份,点我签名就是啦!Mysql、Sql server数据库都可以自动备份哟!
    2014-08-18 14:05:23
    赞同 展开评论 打赏
滑动查看更多
问答排行榜
最热
最新

相关电子书

更多
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
PHP安全开发:从白帽角度做安全 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载