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

一、目的利用autobench工具结合httperf命令对web服务器进行测试,得出该服务器可以承载的最大并发连接数与最佳并发数。二、测试工具工具介绍1、Httperfhttperf 是一款高性能的HTTP测试工具,使用它我们可以准确定位服务器的并发连接能力。下面介绍一下它的主要特征(1) 可以观察测试客户端(并非被测服务器)在发起压力测试时的负载情况。这样在测试高并发的情况下可以准确的分析问题。(被测服务器无法承载高并发还是测试客户端无法发起过多请求)(2)支持HTTP/1.1和SSL(3)可以生成可扩展的测试计划下载:http://code.google.com/p/httperf/downloads/list安装:# 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工具可以生成漂亮的测试结果对比图,如下:

025d702d760f01a40a191b536a60509a.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.6 64bitweb软件环境httpd-2.0.6php5.2.6+ eAcceleratorphp-fpm 开启20个php-cgi进程nginx-0.7.67在测服务器并发能力时会将apache与nginx对比测试硬件环境CPU::E5504 2.00GHz内存:1G虚拟机环境

四、测试方法1、 分别测试静态文件和动态php文件2、 静态并发数从50开始,1500结束,增长幅度为50,动态5~100,增幅为53、 分别测试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

其参数含义--signle_host 只测单机

--host1 测试主机地址

--uri1 host1 测试URI

--quiet 安静模式

--low_rate 测试时最低请求数(指 httperf)

--hight_rate 测试时最高请求数

--rate_step 每次测试请求数增加步长

--num-call 每连接中发起联接数,一般是1

--num_conn 测试联接数

--file 测试结果输出的 tsv文件

测试结果对比分析

3ea0cd05bee8e20cb2a696ba217fad86.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.310.0 10.0 10.0 33.0 31.715.0 15.0 15.0 35.6 31.920.0 19.9 19.9 36.8 32.325.0 25.0 25.0 42.6 36.230.0 29.8 29.7 45.1 67.635.0 34.3 32.4 115.5 248.540.0 35.5 34.9 396.8 427.345.0 35.3 33.4 699.0 865.850.0 35.7 30.5 962.3 1394.055.0 35.5 33.3 1103.9 1354.760.0 35.7 32.9 1269.2 1471.365.0 34.9 33.5 1445.8 1573.670.0 37.6 29.7 1458.0 2049.575.0 37.2 35.9 1610.1 1496.880.0 23.9 31.2 1588.2 1993.385.0 24.7 33.2 1674.9 1880.290.0 37.1 34.5 1838.6 1946.095.0 35.0 30.3 2027.4 2387.2100.0 35.3 36.4 1996.3 1904.5

测试数据测试结果对比图

ab927d69313b7be297a2ad0d2691ba50.png

测试总结由

上面的报表以及这张曲线图可以看出,无论是apache还是nginx其php并发大于30其响应时间的就会直线上升,nginx略好于apache,因

此可以判断这台服务器的php并发极限在30左右,当然这里指的php连接中是没有连接数据库的,也没有加入memcached等缓存机制。(3)高并发下系统资源情况CPU使用情况对比

0a06efabbfdaa594b13e4d898c619139.png

内存使用情况对比

d2657e906a1538bc289ba3ff6f60e169.png

系统负载对比

3a35f41a4312ff0d37a06813b704f706.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

使用说明:测试单台服务器性能,生成tsv文件:

#/usr/local/bin/autobench

--single_host --host1=192.168.1.200 --port1=80 --uri1=/phpinfo.php

--quiet --low_rate=50 --high_rate=1500 --rate_step=50 --num_call=1

--num_conn=2000 --timeout=10 --file /tmp/result.tsv

把tsv文件用图形表示出来:

#/usr/local/bin/bench2graph /tmp/result.tsv /tmp/result.png [1 2 3 ... ]

测试两台服务器,生产tsv文件:

/usr/local/bin/autobench \--host1=192.168.1.10 \--port1=80 \--host2=192.168.1.11 \--port2=80 \--quiet \--low_rate=100 \--high_rate=5000 \--rate_step=10 \--num_call=1 \--num_conn=3000 \--timeout=5 \--file /tmp/result.tsv

再把生成的tsv文件中数据转化成图形:/usr/local/bin/bench2png /tmp/result.tsv /tmp/result.png [ 1 2 3 .... ]

注:[1 2 3 .... ]的值分别表示如下:

1 dem_req_rate

2   req_rate_nginx.zby.com3   con_rate_nginx.zby.com4   min_rep_rate_nginx.zby.com5   avg_rep_rate_nginx.zby.com6   max_rep_rate_nginx.zby.com7   stddev_rep_rate_yhc.zby.com8   resp_time_nginx.zby.com9   net_io_nginx.zby.com10 errors_nginx.zby.com11 req_rate_apache.zby.com12con_rate_apache.zby.com13 min_rep_rate_squid.zby.com14 avg_rep_rate_squid.zby.com15 max_rep_rate_squid.zby.com16 stddev_rep_rate_squid.zby.com17 resp_time_squid.zby.com18 net_io_squid.zby.com19 errors_squid.zby.com

例如,可做下列对比:

2   req_rate_nginx.zby.com 11 req_rate_squid.zby.com/usr/local/bin/bench2png /tmp/result.tsv /tmp/result.png [ 2 11 ]

3   con_rate_nginx.zby.com 12 con_rate_squid.zby.com/usr/local/bin/bench2png /tmp/result.tsv /tmp/result.png [ 3 12 ]     4   min_rep_rate_nginx.zby.com 13 min_rep_rate_squid.zby.com /usr/local/bin/bench2png /tmp/Result.tsv /tmp/result.png [ 4 13 ]

5   avg_rep_rate_nginx.zby.com  14 avg_rep_rate_squid.zby.com  /usr/local/bin/bench2png /tmp/resultdef.tsv /tmp/resulta5_14.png [ 5 14 ]

6   max_rep_rate_nginx.zby.com 15 max_rep_rate_squid.zby.com /usr/local/bin/bench2png /tmp/Resultabc.tsv /tmp/resultaabc6_15.png [ 6 15 ]

7   stddev_rep_rate_nginx.zby.com  16 stddev_rep_rate_squid.zby.com   /usr/local/bin/bench2png /tmp/Resultabc.tsv /tmp/resultaabc7_16.png [ 7 16 ]

8   resp_time_nginx.zby.com 17 resp_time_squid.zby.com  /usr/local/bin/bench2png /tmp/resultdef.tsv /tmp/resultaabc8_17.png [ 8 17 ]

9   net_io_nginx.zby.com18 net_io_squid.zby.com/usr/local/bin/bench2png /tmp/resultdef.tsv /tmp/resultaabc9_18.png [ 9 18 ]

10 errors_nginx.zby.com19 errors_squid.zby.com/usr/local/bin/bench2png /tmp/Resultabc.tsv /tmp/resultaabc10_19.png [ 10 19 ]

【G4基础08】GPS-2-Macro Commands宏命令 GPS-2 阅读详情

相关推荐

半导体设备隔振必看:如何用天棚阻尼PID控制实现VC-C级振动抑制(含SIMULINK模型)

本文深入探讨了在半导体精密制造中,如何运用天棚阻尼PID控制算法实现VC-C级振动抑制。通过构建高保真单自由度仿真模型,详细解析了从算法原理、SIMULINK实现到参数整定的全链路方案,并针对谐波扰动提供了陷波滤波器设计方法,为工程师提供了从仿真到实践的完整主动隔振技术指南。

pz89012345的博客 534

PHP 暂停函数 sleep() 与 usleep() 的区别

在PHP中暂停代码执行一定时间,有两个函数可以实现,一个是sleep(),另一个是usleep(),它们参数都是一个整数值。sleep()是暂停多少秒,usleep()是暂停多少微秒。 注意:usleep()单位是微秒,1秒 = 1000毫秒 ,1毫秒 = 1000微秒,即1微秒等于百万分之一秒。 如果程序中要使用要暂停多少毫秒,只能使用usleep(),务必注意参...

weixin_30568591的博客 479

PPT太丑?用InDesign制作电影级的交互式在线演示文档

本文旨在解决传统演示软件(如PowerPoint、Keynote)在制作商业提案、设计报告时,普遍存在的模板化严重、视觉表现力不足、动态效果廉价的核心痛点。我们将介绍一套常被设计师们“误解”或“忽略”的“降维打击”工作流,核心是利用印刷排版软件 Adobe InDesign 强大的版式控制、动画与交互功能,来创建电影级的动态演示文稿,并通过其 在线发布 (Publish Online) 功能,一键生成可在任何浏览器中流畅访问的网页版交互式文档,从而极大地提升提案的专业度与视觉冲击力。

Kingsdesigner的博客 1265

php怎么测试并发工具,PHP接口并发测试的方法

本篇文章主要介绍PHP接口并发测试的方法,感兴趣的朋友参考下,希望对大家有所帮助。如下所示:header('Content-type:text/html; Charset=utf-8');$uri = "输入你的url";$data = array('test'=>1);$ch = curl_init();// print_r($ch);curl_setopt($ch, CURLOPT_UR...

weixin_29734123的博客 380

SAP SD RRB实战:从DIP参数文件到DP90/DP91开票的完整链路解析

本文详细解析了SAP SD模块中RRB(Resource-related Billing)业务场景的完整链路,从DIP参数文件配置到DP90/DP91开票操作。通过实战案例分享DIP参数文件的核心配置技巧、特性设置及物料决定要点,帮助用户掌握动态开票的关键技术,提升SAP SD RRB的实施效率。

weixin_26833939的博客 369

别让IO口保护二极管坑了你!实测讲解单片机电流倒灌的三种典型症状与防护

本文深入解析单片机电流倒灌的三大典型症状与防护方案,重点分析STM32等单片机在ADC采样异常、系统假死和通信速率异常中的表现。通过实测数据和电路设计建议,提供从基础二极管隔离到专业隔离器件的分级防护策略,帮助工程师有效预防和解决电流倒灌问题。

weixin_29280219的博客 337

测试服务器最大链接数_LoaRunner性能测试系统学习教程:链接器配置(6)

上期我们讲到LoaRunner性能测试Tomcat配置,这期我们讲LoaRunner性能测试链接器配置。连接器配置接连器元素是Tomcat用于连接外部程序的,其允许Catalina接受请求,传送到Web应用程序,将生成的动态信息通过连接器返回到Tomcat服务器。Tomcat的连接器包括两种:HTTP和AJP。 每个连接器元素都有一个端口,Tomcat会通过这个端口来监听请求,并且会为服务器和引...

weixin_39688378的博客 220

别再只盯着轨迹线了!FLUENT DPM后处理实战:从粒子采样到直方图报告的完整流程

本文详细介绍了FLUENT DPM后处理的完整流程,从粒子采样到直方图报告的实战技巧。通过设置采样面、分析.dpm文件数据以及创建加权直方图,帮助工程师获取粒子速度、粒径分布等定量信息,提升多相流模拟的深度分析能力。特别适合需要超越轨迹线分析的CFD工程师。

weixin_28730353的博客 274

php测试并发连接数小工具

<?php $remote_ip = '127.0.0.1'; $remote_port = 9999; $local_ip = ''; $local_port = 0; if ($argc < 2) { echo "Usage: {$argv[0]} conn_num sleep_sec send_rst\n"; exit(1); } $i = intval($argv[1]); $sl

flynetcn的专栏 2337

模型预测控制(MPC)算法介绍

模型预测控制(Model Predictive Control,MPC)是一种先进的控制策略,广泛应用于工业过程控制、机器人控制、电力系统等领域。它基于系统的模型,通过滚动优化来预测系统未来的行为,并据此确定当前的最优控制输入。

AI的内部世界的博客 7153

实战篇| app爬虫不用真机

之前写过一篇基于真机app爬虫《App爬虫实战篇-以华为真机手机爬取集换社的app为例》,如果大家有用真机爬虫的经历,会深刻认识到真的不方便,一是自己的手机,经常会被电话、微信等打断,二是闲置手机,面对小批量数据还能勉强,大批量爬虫,会导致成本指数级上升,并且控制起来相对麻烦。以下就是常见的模拟器。emulator -avd my_avd -no-snapshot-save # 启动时不保存 snapshot。emulator -avd my_avd -wipe-data # 清除数据(恢复到出厂)

youbingchen的博客 593

还在手动测性能?这4个自动化PHP测试工具你必须掌握

提升PHP应用性能不再靠猜,这4个自动化PHP性能测试工具帮你精准定位瓶颈。适用于Web开发、接口优化等场景,支持压力测试与代码分析,高效提升系统响应速度。方法实用,操作便捷,值得收藏。

AlgoInk的博客 588

ROS2 多机器人导航仿真入门教程(一)

RMF 是建立在 ROS 2 基础上的一系列可重复使用、可扩展的库和工具,可实现任何类型机器人系统的异构机群的互操作性。RMF 利用标准化的通信协议与部署机器人的基础设施、环境和自动化系统进行通信,以优化关键资源(如机器人、电梯、门、通道等)的使用。它通过资源分配和通过 RMF 核心(将在本书后面详细介绍)防止共享资源冲突,从而为系统增加智能。RMF 灵活而强大,几乎可以在任何通信层上运行,并与任何数量的物联网设备集成。RMF 的架构设计允许随着环境自动化水平的提高而扩展。

2506_90492529的博客 1653

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

一、目的利用autobench工具结合httperf命令对web服务器进行测试,得出该服务器可以承载的最大并发连接数与最佳并发数。二、测试工具工具介绍1、Httperfhttperf 是一款高性能的HTTP测试工具,使用它我们可以准确定位服务器的并发连接能力。下面介绍一下它的主要特征(1) 可以观察测试客户端(并非被测服务器)在发起压力测试时的负载情况。这样在测试高并发的情况下可以准确的分析问题。...

weixin_33603656的博客 319

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

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

一、目的 利用autobench工具结合httperf命令对web服务器进行测试,得出该服务器可以承载的最大并发连接数与最佳并发数。 二、测试工具工具介绍1、Httperf httperf 是一款高性能的HTTP测试工具,使用它我们可以准确定位服务器的并发连接能力。下面介绍一下它的主要特征 (1) 可以观察测试客户端(并非被测服务器)在发起压力测试时的负载情况。这样在测试高并发的情况下可以

wang_quan_li的专栏 1041

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

利用autobench测试web服务器极限并发数(带使用说明)

一、目的 利用autobench工具结合httperf命令对web服务器进行测试,得出该服务器可以承载的最大并发连接数与最佳并发数。 二、测试工具 工具介绍 1、Httperf httperf 是一款高性能的HTTP测试工具,使用它我们可以准确定位服务器的并发连接能力。下面介绍一下它的主要特征 (1) 可以观察测试客户端(并非被测服务器)在发起压力测试...

weixin_34408717的博客 183

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

PHP性能瓶颈难排查?这5款测试工具让你效率提升200%

轻松定位PHP性能瓶颈,5款高效性能测试工具助力开发优化。涵盖响应时间分析、内存占用检测等场景,支持自动化压测与实时监控,快速提升排查效率200%。实用工具推荐与使用技巧全解析,值得收藏。

DeepLens的博客 907

PHP性能测试工具TOP 5排行榜(专家十年经验倾囊相授)

掌握PHP性能优化关键,精选5款高效PHP性能测试工具,涵盖本地调试、压力测试与生产环境监控场景,结合专家十年实战经验提炼使用方法与调优策略,精准定位瓶颈提升应用响应速度,值得收藏。

FuncWander的博客 1084

并发模拟工具(JMeter、Apache Bench、postMan)详解

目录 简介: 一、Psotman:Http请求模拟工具 1.1 下载地址 1.2 操作说明(以win64为例) 二、Apace Bench(AB):Apache附带的工具,测试网站性能 2.1 简介 2.2 原理 2.3 Apache Bench安装 2.4 Apache Bench 使用 2.5 使用注意 三、JMeter:Apache组织开发的压力测试工具(使用比较多的工具)

hechurui的专栏 2万+

PHP解决网站大流量与高并发

1:硬件方面 普通的一个p4的服务器每天最多能支持大约10万左右的IP,如果访问量超过10W那么需要专用的服务器才能解决,如果硬件不给力 软件怎么优化都是于事无补的。主要影响服务器的速度 有:网络-硬盘读写速度-内存大小-cpu处理速度。 2:软件方面 第一个要说的就是数据库,首先要有一个很好的架构,查询尽量不用* 避免相关子查询 给经常查询的添加索引 用排序来取代非顺序存取,如...

weixin_30289831的博客 421

php7 每秒并发数,支持多少并发

# WorkerMan支持多少并发**并发**概念太模糊,这里以两种可以量化的指标**并发连接数**和**并发请求数**来说明。**并发连接数**是指服务器当前时刻一共维持了多少TCP连接,而这些连接上是否有数据通讯并不关注,例如一台消息推送服务器上可能维持了百万的设备连接,由于连接上很少有数据通讯,所以这台服务器上负载可能几乎为0,只要内存足够,还可以继续接受连接。**并发请求数**一般用QPS...

weixin_39999116的博客 1123

PHP协程最大并发数如何设置?99%的开发者都忽略的关键配置

掌握PHP协程的并发限制配置,有效提升高并发场景下的性能与稳定性。通过Swoole或Workerman设置最大协程数,合理控制并发量,避免资源耗尽。详解配置参数与最佳实践,值得收藏。

AlgoFun的博客 795

Tomcat的最大并发配置

Tomcat 默认配置的最大请求数是 150,也就是说同时支持 150 个并发。          操作系统对于进程中的线程数有一定的限制:       Windows 每个进程中的线程数不允许超过 2000       Linux 每个进程中的线程数不允许超过 1000       另外,在 Java 中每开启一个线程需要耗用 1MB 的 JVM 内存空间用于作为线程栈之用。     ...

Veritas_C的博客 1689

PHP实现百万并发_php实现并发

使用场景如果你第三方的多个接口,需要循环请求,这时候就需要并发处理,因为 php 是单进程,顺序执行的程序,如果有一个接口挂了,那么后面的接口也不能得到请求,或者某个接口等待时间过长,下面的接口也需要等待时间,那么十多个接口每个接口等待1S,十个接口就需要10S才能完成一次请求。这时候,就需要使用并发请求使用方案可以先写好针对某个第三方的请求接口,然后使用并发请求这些第三方的接口并发代码funct...

weixin_34494211的博客 806
上一篇: api php jwt,Laravel使用JWT实现API用户授权的详细步骤
下一篇: pythonhelloworld项目,10分钟搭建一个小型网页(python django)(hello world!)
悦舟
博客等级 码龄6年 21粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值