PHP测试方案 一、 性能测试(xhprof) 1)、安装 Wget http://pecl.php.net/get/xhprof-0.9.2.tgz tar xzvf xhprof-0.9.2.tgz cd xhprof-0.9.2/extension /usr/local/php-5.3.5/bin/phpize ./configure –with-php-config=/usr/local/php-5.3.5/bin/php-config make && make install
2)、配置PHP 在php.ini文件中加入xhprof.so模块 extension = /usr/local/php-5.3.6/lib/php/extension/xxxx/xhprof.so
保存并关闭,然后重启PHP
把xhprof_lib和xhprof_html两个目录拷贝到网站的根目录”xxx.xxxx.com/xhprof/”下,
2、使用 在需要做性能测试的地方加入 开始: // XHPROF_FLAGS_CPU // XHPROF_FLAGS_MEMORY // XHPROF_FLAGS_NO_BUILTINS 跳过内置函数 // 要设定要忽略的函数列表,可以在分析时给xhprof_enable函数 指定第二个参数[是个可选参数], 如: xhprof_enable(XHPROF_FLAGS_MEMORY, array( 'ignored_functions' => array( 'call_user_func', 'call_user_func_array' ) ) );
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY); 结束: $xhprofData = xhprof_disable(); define('XHPROF_ROOT', Yii::getPathOfAlias('webroot.xhprof'));
include_once(XHPROF_ROOT . '/xhprof_lib/utils/xhprof_lib.php'); include_once(XHPROF_ROOT . '/xhprof_lib/utils/xhprof_runs.php'); $xhprofRuns = new XHProfRuns_Default(); $runId = $xhprofRuns->save_run($xhprofData, ' <namespace>'); echo "http://xxx.xxx.xxx/xhprof/xhprof_html/index.php?run={$runId}&source= <namespace>";
然后就可以根据上面的地址查看
这样就可以查看到每个函数调用所消耗的CPU、内存、执行时间等
查看单一报告: http://xxx.xxx.xxx/xhprof/xhprof_html/index.php?run={$runId}&source= <namespace> 查看对比报告: http://xxx.xxx.xxx/xhprof/xhprof_html/index.php?run1=xxxx&run2=xxx&source=<namespace> 查看汇总报告: http://xxx.xxx.xxx/xhprof/xhprof_html/index.php?run=1,2,3&source= <namespace> 加权汇总 :进一步假设,上述3个运特分别对应三种程序,p1.php,p2.php和p3.php ,通常以20%,30%,50%概率混合:要查看汇总报告所对应的加权平均数这些运行使用: http://xxx.xxx.xxx/xhprof/xhprof_html/index.php?run=1,2,3 &wts=20,30,50&source= <namespace>
二、 压力测试 命令: ab –c 256 –n 100000 http://iploc.kuaibo.com/ip/weather
-c 并发数 -n 总请求次数 -t 总请求时间,超过5万次结束
服务器压力测试参考数据: 1、 CPU (nginx、PHP、MYSQL) top 2、 内存(nginx、PHP、MYSQL) free 3、 队列 4、 I/O 5、 网络流量
两种测试结合进行, 压力测试由低到高, 并且观察服务器的资源占用情况。 在压力测试的同时, 使用性能测试工具xhprof结合起来测试, 看看瓶颈是在哪里, 什么地方比较占用资源等。
//demo
<?php
function a(){
echo 'test it'; }
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY); a(); $xhprof_data = xhprof_disable();
include_once "xhprof/xhprof_lib/utils/xhprof_lib.php"; include_once "xhprof/xhprof_lib/utils/xhprof_runs.php"; $xhprof_runs = new XHProfRuns_Default(); $run_id = $xhprof_runs->save_run($xhprof_data, "sourcejoy");
//echo "ttttt<br>"; echo "http://www.test.com/xhprof/xhprof_html/index.php?run={$run_id}&source=sourcejoy";
?>
|