PHP压力测试使用apache的ab工具和Linux的time命令
2023-09-14 08:56:53 时间
ab工具是apache自带的一个压力测试工具,可以在apache的安装路径下的bin目录下找到,我的环境中是在/usr/local/apache/bin/目录下;
ab 压测主要使用两个参数:
-n 请求数
-c 并发数
对于测试的结果,主要关注两个点:
Requests per second 服务器每秒接收的请求,该值越大越好
Time per request 服务器处理完每个请求所花的时间,该值越小越好
使用格式:
/usr/local/bin/ab -n1000 -c10 www.demo.com/index.php
/usr/local/bin/ab -n1000 -c10 1.2.3.123:80/index.php
如果我们需要测试本地某个php脚本的运行情况,比如说执行所花的时间,可以在脚本的开始处获取一下时间戳,然后在脚本结束的地方再获取一下时间戳,通过这两个时间戳的相减,来获得脚本大概的运行耗时(因为获取时间戳也耗时),比如说下面的例子:
<?php function current_time(){ list($usec,$sec) = explode( " ", microtime() ); return ((float)$usec + (float)$sec); } $start = current_time(); $i = 0; $arr = array(); while( $i < 100000 ){ $arr[] = rand(10000,200000); $i++; } $end = current_time(); //echo $end - $start."s"; $spend = number_format($end - $start,3)*1000;
echo "spend ".$spend."ms\n" ?>
使用Linux命令行运行该脚本:
[root@localhost wwwroot]# php index.php spend 44ms [root@localhost wwwroot]# php index.php spend 40ms [root@localhost wwwroot]# php index.php spend 37ms [root@localhost wwwroot]# php index.php spend 41ms [root@localhost wwwroot]# php index.php spend 41ms
因为每次花费的时间不同,可以取平均值为参考。
上面的做法地确能达到检测一个php脚本运行的时间及效率,但是有点麻烦,每次都要显式地取时间戳,然后相减。所以推荐使用Linux的time命令,可以用来统计一个命令所花费的时间,比如下例:
<?php $i = 0; $arr = array(); while( $i < 100000 ){ $arr[] = rand(10000,200000); $i++; } ?>
使用命令行来运行脚本:
[root@localhost wwwroot]# time php index.php real 0m0.070s user 0m0.050s sys 0m0.020s [root@localhost wwwroot]# time php index.php real 0m0.062s user 0m0.046s sys 0m0.016s
在上面运行的结果中,我们只关注user的那一行时间,关于这三个时间的解释,可以参考下面的解释:
- real时间是指挂钟时间,也就是命令开始执行到结束的时间。这个短时间包括其他进程所占用的时间片,和进程被阻塞时所花费的时间。
- user时间是指进程花费在用户模式中的CPU时间,这是唯一真正用于执行进程所花费的时间,其他进程和花费阻塞状态中的时间没有计算在内。
- sys时间是指花费在内核模式中的CPU时间,代表在内核中执系统调用所花费的时间,这也是真正由进程使用的CPU时间。
相关文章
- PHP连接linux并执行命令,php实现ssh远程连接服务器并操作服务器,PHP跨服务器执行shell脚本
- 一步步教你使用PHP调用Linux命令(php调用linux命令)
- Linux新建PHP文件的操作指南(linux新建php文件)
- 安装安装Linux下的64位PHP(linux64位php)
- Linux下快速安装翻译软件(linux安装翻译软件)
- 卸载Linux环境下的PHP:一个指南(linux如何卸载php)
- 解锁Linux之旅:认识时间命令行设置(linux设置时间命令行)
- Linux 快速重启:只需一分钟!(linux快速重启)
- Linux虚拟网络:提高效率的必备工具(linux虚拟网口)
- Linux查看硬盘数量的最佳途径(linux查看硬盘个数)
- Linux下如何保护数据安全(linux如何保存)
- Linux重启PHP的命令操作指南(linux重启php命令)
- 新手上路:Linux .s文件入门(linux.s文件)
- Linux下画出色彩斑斓的画卷(linux画画)
- Linux开启3306端口:简单3步迅速搞定(linux开启3306端口)
- 快速安装配置PHP在Linux系统上(php安装配置linux)
- 迈出新步伐:Linux下快速PHP升级(linux下php升级)
- 探索Linux的分区奥秘(linux查看分区情况)
- 使用 Filezilla 连接 Linux 服务器的步骤(filezilla连接linux)
- 「Linux下的PHP开发」(linux开发php)
- PHP开发者必须了解的Linux常识(php开发linux)
- Linux下PHP的重启操作(php重启.linux)
- 化安装Linux系统:最小化安装指南(linux系统最小)
- php建立你的网站:使用 Apache、MySQL 和 PHP(httpdmysql)
- 学习PHP提升Linux技能(php学linux)
- 如何在Linux下快速搭建PHP环境(linux下php环境搭建)
- 保护你的系统:最好的Linux杀毒工具(linux杀毒工具)
- Linux源码位置:探索内核实现的奥秘(linux源码位置)
- 查看Linux系统中进程端口信息(查看进程端口 linux)
- Linux下妙用端口绑定技术(linux端口绑定)
- Linux定时执行PHP脚本,提高效率(linux定时执行php)
- Linux下搭建PHP开发环境的一步步操作(linux配置php环境)
- Linux下APACHE&PHP&MYSQL&CGI修改版