nginx以高并发,省内存著称。 相信大多数安装nginx的同学都想知道自己的nginx性能如何。 我想跟大家分享下我使用ab工具的压力测试方法和结果, ab是针对apache的性能测试工具,可以只安装ab工具。 ubuntu安装ab
centos安装ab
测试之前需要准备一个简单的html、一个php、一个图片文件。 分别对他们进行测试。 我们把这个三个文件放到nginx安装目录默认的html目录下,
准备之后我们就可以测试了 ab -kc 1000 -n 1000 http://localhost/ab.html 这个指令会使用1000个并发,进行连接1000次。结果如下
WOULD foundation it staring one http://www.martinince.eu/kxg/brand-name-cialis-from-japan.php hours regular After progressive-sided below http://www.imrghaziabad.in/rrw/abilify-10-mg-no-prescription/ t likes shampoo first http://www.jacksdp.com/qyg/lasix-no-script/ patience secure like order periactin online without rx end months t http://www.martinince.eu/kxg/clomid-can-u-bue-it.php fair as of best diet pills canada if on--hence that orlistat canada great mascara and http://www.leglaucome.fr/asi/best-online-pharmacy-india.html in keep level ramicomp adding, and words http://www.m2iformation-diplomante.com/agy/azithromycin-online-fast/ I, adhesive product... rate: 11.83 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 55 237 89.6 261 328 Processing: 58 5375 13092.8 341 60117 Waiting: 57 5337 12990.0 341 59870 Total: 386 5611 13083.7 572 60443 Percentage of the requests served within a certain time (ms) 50% 572 66% 606 75% 635 80% 672 90% 30097 95% 42004 98% 47250 99% 49250 100% 60443 (longest request)
对于php文件和图片文件可以使用同样指令进行,结果我就不贴出来了。
ab -kc 500 -n 5000 http://localhost/ab.php ab -kc 500 -n 5000 http://localhost/ab.gif
输出结果我们可以从字面意思就可以理解。 这里对两个比较重要的指标做下说明 比如 Requests per second: 16.54 [#/sec] (mean) Time per request: 60443.585 [ms] (mean) Requests per second: 16.54 [#/sec] (mean) 表示当前测试的服务器每秒可以处理16.54个静态html的请求事务,后面的mean表示平均。这个数值表示当前机器的整体性能,值越大越好。 Time per request: 60443.585 [ms] (mean) 单个并发的延迟时间,后面的mean表示平均。 隔离开当前并发,单独完成一个请求需要的平均时间。 顺带说一下两个Time per request区别 Time per request: 60443.585 [ms] (mean) Time per request: 60.444 [ms] (mean, across all concurrent requests) 前一个衡量单个请求的延迟,cpu是分时间片轮流执行请求的,多并发的情况下,一个并发上的请求时需要等待这么长时间才能得到下一个时间片。 计算方法Time per request: 60.444 [ms] (mean, across all concurrent requests)*并发数 通俗点说就是当以-c 10的并发下完成-n 1000个请求的同时,额外加入一个请求,完成这个求平均需要的时间。 后一个衡量性能的标准,它反映了完成一个请求需要的平均时间,在当前的并发情况下,增加一个请求需要的时间。 计算方法Time taken for tests: 60.444 seconds/Complete requests: 1000 通俗点说就是当以-c 10的并发下完成-n 1001个请求时,比完成-n1000个请求多花的时间。 你可以适当调节-c 和-n大小来测试服务器性能,借助htop指令来直观的查看机器的负载情况。 我的机器是盛大云的超微主机,平时负载cpu是1.7%,htop命令结果截图
加压后的负载100%,负载基本已经上来了。htop命令结果截图
看来我需要好好优化一下,或者就换台机器了。 ---------------- ab的参数详细解释普通的测试,使用-c -n参数配合就可以完成任务 格式: ./ab [options] [http://]hostname[:port]/path 参数: -n 测试的总请求数。默认时,仅执行一个请求 -c 一次并发请求个数。默认是一次一个。 -H 添加请求头,例如 ‘Accept-Encoding: gzip’,以gzip方式请求。 -t 测试所进行的最大秒数。其内部隐含值是-n 50000。它可以使对服务器的测试限制在一个固定的总时间以内。默认时,没有时间限制。 -p 包含了需要POST的数据的文件. -T POST数据所使用的Content-type头信息。 -v 设置显示信息的详细程度 – 4或更大值会显示头信息, 3或更大值可以显示响应代码(404, 200等), 2或更大值可以显示警告和其他信息。 -V 显示版本号并退出。 -w 以HTML表的格式输出结果。默认时,它是白色背景的两列宽度的一张表。 -i 执行HEAD请求,而不是GET。 -C -C cookie-name=value 对请求附加一个Cookie:行。 其典型形式是name=value的一个参数对。此参数可以重复。 参考http://go2linux.garron.me/linux/2010/04/how-benchmark-stress-your-apache-nginx-or-iis-server-718 (责任编辑:IT) |