热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php并发极限,利用autobench测试web服务器极限并发数

一、目的利用autobench工具结合httperf命令对web服务器进行测试,得出该服务器可以承载的最大并发连接数与最佳并发数。二、测试工具工具介绍1、Httper

一、目的

利用autobench工具结合httperf命令对web服务器进行测试,得出该服务器可以承载的最大并发连接数与最佳并发数。

二、测试工具

工具介绍

1、Httperf

httperf 是一款高性能的HTTP测试工具,使用它我们可以准确定位服务器的并发连接能力。下面介绍一下它的主要特征

(1) 可以观察测试客户端(并非被测服务器)在发起压力测试时的负载情况。这样在测试高并发的情况下可以准确的分析问题。(被测服务器无法承载高并发还是测试客户端无法发起过多请求)

(2)支持HTTP/1.1和SSL

(3)可以生成可扩展的测试计划

安装:

# tar xvzf httperf-0.9.0.tar.gz

# cd httperf-0.9.0

#./configure

# make && make install

更多的使用方法参见man page。

2、autobench

autobench 是一款基于httperf的Perl脚本。它会在一次测试中调用多次httperf来对web服务器进行测试,每次会按照给定的参数增加并发连接数,将httperf的测试结果保存为CSV格式的文件,该文件可以被Excel直接读取,方便生成测试报告。借助于autobench自带的bench2graph工具可以生成漂亮的测试结果对比图,如下:

results.gif

下载:http://www.xenoclast.org/autobench/downloads/

安装:

# yum install gd gnuplot pcre pcre-devel texinfo -y

# tar zxvf autobench-2.1.2.tar.gz

# cd autobench-2.1.2

# make && make install

# sed -i 's/postscript color/png xffffff/g' /usr/local/bin/bench2graph (修改bench2graph脚本,否则生成的图像背景有问题)

使用方法:参见下文在实际测试中的使用

三、测试环境

系统环境

CentOS 5.3 64bit

web软件环境

httpd-2.0.6

php5.2.6+ eAccelerator

php-fpm  开启20个php-cgi进程

nginx-0.7.67

在测服务器并发能力时会将apache与nginx对比测试

硬件环境

CPU::E5504  2.00GHz

内存:1G

虚拟机环境

四、测试方法

1、  分别测试静态文件和动态php文件

2、  静态并发数从50开始,1500结束,增长幅度为50,动态5~100,增幅为5

3、  分别测试apache和nginx的并发能力,二者进行对比

4、  每次测试进行3次,最终结果求三次平均值

5、  每进行一次测试后均重启httpd或nginx(php-fpm)服务,释放内存后再进行下一轮测试

6、  为了减少磁盘IO,均关掉了访问日志

1、开始测试

(1)静态文件

测试命令

# autobench --single_host --host1=192.168.8.8 --port1=80 --uri1=/logo.gif  --quiet  --low_rate=50 --high_rate=1500 --rate_step=50 --num_call=1 --num_cOnn=2000 --timeout=10 --file /tmp/result.tsv

测试结果对比分析

static.png

测试结果总结:

Apache与Nginx在并发50~1500时表现得都还可以,只不过在并发数达到1500后Apache的响应时间变得很长,由于系统环境的制约,我没有再测试大于1500的并发连接情况,但可以对比看出nginx在1500个并发连接的情况下还能保持较低的响应时间。

(2)动态文件

测试命令

# autobench --single_host --host1=192.168.8.8 --port1=80 --uri1=/test.php --quiet --low_rate=5 --high_rate=100 --rate_step=5 --num_call=1 --num_cOnn=200 --timeout=10 --file /tmp/nginx_php1.tsv

测试结果数据

并发连接数

nginx实际并发数

apache实际并发数

nginx应答时间

apache应答时间

5.0

5.0

5.0

36.0

36.3

10.0

10.0

10.0

33.0

31.7

15.0

15.0

15.0

35.6

31.9

20.0

19.9

19.9

36.8

32.3

25.0

25.0

25.0

42.6

36.2

30.0

29.8

29.7

45.1

67.6

35.0

34.3

32.4

115.5

248.5

40.0

35.5

34.9

396.8

427.3

45.0

35.3

33.4

699.0

865.8

50.0

35.7

30.5

962.3

1394.0

55.0

35.5

33.3

1103.9

1354.7

60.0

35.7

32.9

1269.2

1471.3

65.0

34.9

33.5

1445.8

1573.6

70.0

37.6

29.7

1458.0

2049.5

75.0

37.2

35.9

1610.1

1496.8

80.0

23.9

31.2

1588.2

1993.3

85.0

24.7

33.2

1674.9

1880.2

90.0

37.1

34.5

1838.6

1946.0

95.0

35.0

30.3

2027.4

2387.2

100.0

35.3

36.4

1996.3

1904.5

测试数据

测试结果对比图

total_php-2.png

测试总结

由上面的报表以及这张曲线图可以看出,无论是apache还是nginx其php并发大于30其响应时间的就会直线上升,nginx略好于apache,因此可以判断这台服务器的php并发极限在30左右,当然这里指的php连接中是没有连接数据库的,也没有加入memcached等缓存机制。

(3)高并发下系统资源情况

CPU使用情况对比cpu.png

内存使用情况对比

memory.png

系统负载对比

load.png

分析测试结果

CPU使用情况

在极限并发的情况下apache和nginx都占用很多CPU资源,这也是情理之中的事          情。nginx略好于apache平均占用90%而apache则在95%左右

内存使用情况

在内存对比中可以清楚的看到,nginx在极限并发的情况下内存控制得很好,到达一定程度后就不在变化了,而apache则会直线上升

负载情况

负载情况与内存情况类似,如果高并发时间很长的话apache服务器绝对会挂掉!nginx的负载也很高,但一直保持在10以下,这也和内存占用有关。

五、结论

利用httperf结合autobench可以很方便的测试出单台服务器的极限并发数,这样对服务器性能评估有很大帮助,借助于autobench的bench2graph脚本可以生成更为直观的对比图。

针对被测服务器,经过apache与nginx的对比发现,在静态文件的处理方面如果并发小于1500,apache和nginx之间的差距还是很小的。在动态php文件的并发测试中,nginx体现出其强大的性能优势,如果内存足够大,通过调整php-cgi数量,相信可以承载更多的并发连接。

六、附录

1、问题解决

(1)当运行时报如下错误

httperf: warning: open file limit > FD_SETSIZE; limiting max. # of open files to FD_SETSIZE

解决方法

其意思是说在httperf在发起连接请求时,单个进程已经无法再打开更多的文件描述符。在发起连接请求时httperf使用select()方法使用一个新的文件描述符。因此需要增加文件描述符限制

步骤1:编辑/etc/security/limits.conf 在最后添加下面两行内容

*       hard    nofile          102400

*       soft    nofile          102400

步骤2:编辑 /usr/include/bits/typesizes.h 文件修改__FD_SET_SIZE常量值,如下

#define __FD_SETSIZE            1024

修改为

#define __FD_SETSIZE            102400

步骤3:重新编译httperf

2、参考文章



推荐阅读
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 如何搭建服务器环境php(2023年最新解答)
    导读:本篇文章编程笔记来给大家介绍有关如何搭建服务器环境php的相关内容,希望对大家有所帮助,一起来看看吧。本文目录一览:1、怎么搭建p ... [详细]
  • centos php部署到nginx 404_NodeJS项目部署到阿里云ECS服务器全程详解
    本文转载自:http:www.kovli.com20170919ecs-deploy作者:Kovli本文详细介绍如何部署NodeJS项目到阿里云ECS上, ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • 微软评估和规划(MAP)的工具包介绍及应用实验手册
    本文介绍了微软评估和规划(MAP)的工具包,该工具包是一个无代理工具,旨在简化和精简通过网络范围内的自动发现和评估IT基础设施在多个方案规划进程。工具包支持库存和使用用于SQL Server和Windows Server迁移评估,以及评估服务器的信息最广泛使用微软的技术。此外,工具包还提供了服务器虚拟化方案,以帮助识别未被充分利用的资源和硬件需要成功巩固服务器使用微软的Hyper - V技术规格。 ... [详细]
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
  • 现在比较流行使用静态网站生成器来搭建网站,博客产品着陆页微信转发页面等。但每次都需要对服务器进行配置,也是一个重复但繁琐的工作。使用DockerWeb,只需5分钟就能搭建一个基于D ... [详细]
  • centos6.8 下nginx1.10 安装 ... [详细]
  • TiDB | TiDB在5A级物流企业核心系统的应用与实践
    TiDB在5A级物流企业核心系统的应用与实践前言一、业务背景科捷物流概况神州金库简介二、现状与挑战神州金库现有技术体系业务挑战应对方案三、TiDB解决方案测试迁移收益问题四、说在最 ... [详细]
  • 本文介绍了MVP架构模式及其在国庆技术博客中的应用。MVP架构模式是一种演变自MVC架构的新模式,其中View和Model之间的通信通过Presenter进行。相比MVC架构,MVP架构将交互逻辑放在Presenter内部,而View直接从Model中读取数据而不是通过Controller。本文还探讨了MVP架构在国庆技术博客中的具体应用。 ... [详细]
  •  项目地址https:github.comffmydreamWiCar界面做的很难看,美工方面实在不在行。重点是按钮触摸事件的处理,这里搬了RepeatListener项目代码,例 ... [详细]
author-avatar
ABC13517626247
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有