服务器压力测试之ab工具

ab(apachebench命令的缩写)是apache自带的压力测试工具。ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。比如nginx、tomcat、IIS等。

一、ab的原理

ab的原理:ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问。它的测试目标是基于URL的,因此,它既可以用来测试apache的负载压力,也可以测试nginx、lighthttp、tomcat、IIS等其它Web服务器的压力。

ab命令对发出负载的计算机要求很低,它既不会占用很高CPU,也不会占用很多内存。但却会给目标服务器造成巨大的负载,其原理类似CC攻击。自己测试使用也需要注意,否则一次上太多的负载。可能造成目标服务器资源耗完,严重时甚至导致死机。

二、ab的安装

ab的安装非常简单,如果是源码安装apache的话,那就更简单了。apache安装完毕后ab命令存放在apache安装目录的bin目录下。如下:

/usr/local/apache2/bin/ab


注意:如果不想安装apache但是又想使用ab命令的话,我们可以直接安装apache的工具包httpd-tools。如下:

yum -y install httpd-tools

查看ab是否安装成功,可以切换到上述目录下,使用ab –V命令进行检测。如下:
ab -V

三、测试

参数很多,一般我们用 -c 和 -n 参数就可以了. 例如:

./ab -c 100 -n 1000 http://www.myshop.com/

这个表示同时处理1000个请求并运行1000次index.php文件.

-c 100:表示并发用户数为100

-n 1000:表示请求总数为1000

四、测试结果分析

test01

//并发数
Concurrency Level: 100 

//大家最关心的指标之一,相当于 LR 中的 每秒事务数 ,后面括号中的 mean 表示这是一个平均值
Requests per second: 122.12 [#/sec] (mean) 

//大家最关心的指标之二,相当于 LR 中的 平均事务响应时间 ,后面括号中的 mean 表示这是一个平均值
Time per request: 8188.731 [ms] (mean) 

//每个请求实际运行时间的平均值
Time per request: 8.189 [ms] (mean, across all concurrent requests) 

//平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题
Transfer rate: 162.30 [Kbytes/sec] received

//整个场景中所有请求的响应情况。在场景中每个请求都有一个响应时间,其中50%的用户响应时间小于7312 毫秒,66% 的用户响应时间小于7413 毫秒,最大的响应时间小于8941 毫秒

由于对于并发请求,cpu实际上并不是同时处理的,而是按照每个请求获得的时间片逐个轮转处理的,所以基本上第一个Time per request时间约等于第二个Time per request时间乘以并发请求数

总结:在远程对web服务器进行压力测试,往往效果不理想(因为网络延时过大),建议使用内网的另一台或者多台服务器通过内网进行测试,这样得出的数据,准确度会高很多。如果只有单独的一台服务器,可以直接本地测试,比远程测试效果要准确。

其他测试工具:如阿里的PTS在线压测工具

phpstorm一个窗口打开多个项目

phpstorm默认一个窗口只显示一个项目,入股拟新建一个项目,他会给你个选项卡,问你是在新窗口打开新项目还是在本窗口打开。

能不能在一个窗口打开多个项目呢?就像sublime text那样,其实是可以,具体方法如下:

依次打开:

File -> settings -> Project:project->Directories -> Add Content Root 选择要添加的项目目录即可。