IT技术博客大学习 共学习 共进步

在生产环境中使用php性能测试工具xhprof

某人的栖息地 2009-10-27 08:58:40 浏览 4,742 次

    xhprof是facebook开源出来的一个php性能测试工具,也可以称之为profile工具,这个词不知道怎么翻译才比较达意。跟之前一直使用的xdebug相比,有很多类似之处。以前对xdebug有一些记录还可以供参考,但是它的缺点是对性能影响太大,即便是开启了profiler_enable_trigger参数,用在生产环境中也是惨不忍睹,cpu立刻就飙到high。

    而xhprof就显得很轻量,是否记录profile可以由程序控制,因此,用在生产环境中也就成为一种可能。在它的文档上可以看到这样一种用法:

    以万分之一的几率启用xhprof,平时悄悄的不打枪。

以下是代码片段:
if (mt_rand(1, 10000) == 1) {
 xhprof_enable(XHPROF_FLAGS_MEMORY);
 $xhprof_on = true;

    在程序结尾处调用方法保存profile

以下是代码片段:
if ($xhprof_on) {
 // stop profiler
 $xhprof_data = xhprof_disable();

 // save $xhprof_data somewhere (say a central DB)
 ...

    也可以用register_shutdown_function方法指定在程序结束时保存xhprof信息,这样就免去了结尾处判断,给个改写的不完整例子:

以下是代码片段:
if (mt_rand(1, 10000) == 1) {
 xhprof_enable(XHPROF_FLAGS_MEMORY);
 register_shutdown_function(create_funcion(\’\’, "$xhprof_data = xhprof_disable(); save $xhprof_data;"));

    至于日志,我暂时用的是最土的文件形式保存,定期清除即可。

    BTW:xhprof生成的图形方式profile真是酷毙了,哪段代码成为瓶颈,一目了然。

建议继续学习

  1. Xvfb+YSlow+ShowSlow搭建前端性能测试框架 (阅读 55,342)
  2. 安全测试与渗透测试区别 (阅读 24,822)
  3. Mysql监控指南 (阅读 21,102)
  4. 分享一个JQUERY颜色选择插件 (阅读 14,062)
  5. 使用Fiddler对手机应用进行抓包测试 (阅读 8,460)
  6. 服务器性能测试工具推荐 (阅读 7,902)
  7. 给Apache做压力测试时遇到的问题 (阅读 7,182)
  8. WEB性能测试工具推荐 (阅读 6,942)
  9. 可用性测试好助手——Morae软件的应用 (阅读 6,682)
  10. 12款很棒的浏览器兼容性测试工具推荐 (阅读 6,143)