apache jmeter

我一直在使用JMeter为生产服务器生成负载以测试我的应用程序。 该测试计划具有13个以上的HTTP采样器以发出不同的请求,并具有一个正则表达式提取器以从响应中提取一些值。 此值在连续的HTTP Sampler中使用。 这个测试用例简单而直接。 最初,我使用200个JMeter线程来模拟200个用户。 服务器能够轻松地处理许多请求,但是当线程数量增加时,它就无法无限地处理和等待。 当然发生了什么事。 JMeter线程正在等待连接,因此无法无限等待它。 为了避免这种情况,我引入了“ HTTP Request default”来添加一些连接和响应超时。 解决了一个问题,现在线程并没有无限地挂在那里,但是它们因以下异常而超时。

java.net.SocketTimeoutException: Read timed outat java.net.SocketInputStream.socketRead0(Native Method)at java.net.SocketInputStream.read(SocketInputStream.java:129)at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)at java.io.BufferedInputStream.read(BufferedInputStream.java:237)at org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:78)at org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:106)at org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection.java:1116)at org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.java:1973)at org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:1735)at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1098)at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323)at org.apache.jmeter.protocol.http.sampler.HTTPHC3Impl.sample(HTTPHC3Impl.java:258)at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:62)at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1088)at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1077)at org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:428)at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:256)at java.lang.Thread.run(Thread.java:662)

肯定是服务器的一部分(Apache 2.2.14 + Apache-tomcat-7.0.11)正在崩溃,但不确定是哪一部分。 当然设置中存在一些瓶颈。 在当前设置中,Apache服务器正在将请求转发到Tomcat引擎。 因此,可以肯定的是,它们之一都不能一次处理200多个请求。 我做了一些更改,将所有请求直接转发到Tomcat引擎。 它能够处理它,这意味着Apache在懈怠。 我Swift检查了/var/log/apache2/error.log存在的Apache error.log文件,发现以下几行。

[Wed Jun 26 16:46:19 2013] [error] server is within MinSpareThreads of MaxClients, consider raising the MaxClients setting
[Wed Jun 26 16:46:20 2013] [error] server reached MaxClients setting, consider raising the MaxClients setting
[Wed Jun 26 17:24:42 2013] [error] server is within MinSpareThreads of MaxClients, consider raising the MaxClients setting
[Wed Jun 26 17:24:43 2013] [error] server reached MaxClients setting, consider raising the MaxClients setting

这清楚地表明MaxClients数应该增加,这反过来又会增加Apache线程数。 我Swift编辑了apache2.conf文件,通过添加以下配置来增加MaxClients数量,并执行"apache2ctl -t"以确认在配置文件中所做的更改是正确的。

<IfModule mpm_worker_module>StartServers          2MinSpareThreads      25  MaxSpareThreads     100 ThreadLimit         800ThreadsPerChild     800 MaxClients         2400MaxRequestsPerChild   0
</IfModule>

我有些放松,以为现在Apache一定会处理现在的负载。 但是令我惊讶的是,它无法再一次将相同的异常击中JMeter。 在这一点上,我想通过启用服务器状态来检查Apache的性能。 此功能可以使您清楚地了解连接状态。 我将以/etc/apache2/mods-available/status.conf放在/etc/apache2/mods-available/status.conf

<Location /server-status>SetHandler server-statusOrder deny,allowDeny from allAllow from  .your.domain.here.com localhost
</Location>

我通过执行以下命令重新启动了Apache和服务器

/> sudo service apache2 restart; sudo service tomcat restart;

Apache重新启动后,我点击以下URL获取服务器状态。

http://your.server.name/server-status?refresh=3

在为200多个线程运行JMeter之后,我在状态页面上注意到了这一点。

Apache服务器状态

状态页指示"W" (发送答复)状态下有大量连接。 这可能是由其他原因引起的。 我试图用谷歌搜索它,但是找不到任何确定的解决方案。 但是有一件事可以肯定,Apache不会引起问题。 它必须在Apache和tomcat之间。 我意识到JMeter测试计划适用于200个线程,甚至Tomcat默认情况下也具有200个线程。 我只是碰巧通过编辑"<APACHE_TOMCAT_HOME>/conf/server.xml"文件将线程数增加到400。

<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" maxThreads="400" minSpareThreads="20" />

现在,服务器可以轻松处理JMeter负载,即使完成测试计划,Apache连接也处于良好状态。
尽管问题已解决,但是当JMeter配置为直接将所有请求发送到Tomcat时,我无法理解为什么Tomcat能够处理负载,但是当Apache将请求转发到Tomcat时,却无法处理负载。 如果您对此行为有任何解释,请在评论部分中共享。

参考:来自我们的JCG合作伙伴 Rakesh Cusat的Code4Reference博客上的Apache Server和JMeter调试 。

翻译自: https://www.javacodegeeks.com/2013/07/apache-server-and-jmeter-debugging.html

apache jmeter

apache jmeter_Apache Server和JMeter调试相关推荐

  1. Apache Server和JMeter调试

    我一直在使用JMeter为生产服务器生成负载以测试我的应用程序. 该测试计划具有13个以上的HTTP采样器以发出不同的请求,并具有一个正则表达式提取器以从响应中提取一些值. 此值在连续的HTTP Sa ...

  2. Ubuntu 12.04 64bit上安装Apache Traffic Server 4.1.2

    说明: 对于企业级服务器来说,一般是使用Redhat或是CentOS上来跑Apache traffic server作为代理缓存服务器, 一般使用Ubuntu的机会很少,我这里探讨安装在Ubuntu ...

  3. vs.php中使用apache或IIS7进行外部调试

    vs.php中使用apache或IIS7进行外部调试 1.解决vs.php2.7在Windows7下调试apache出错的问题 vs.php默认使用内部调试模式,由于vs.php2.7默认自带的内部调 ...

  4. 44个实用的Apache Web Server面试问题及答案

    Apache HTTP是Windows和UNIX的开源Web服务器,也是最受欢迎的Web服务器,如果您打算以中间件/系统/ Web管理员的身份工作,则必须熟悉它. 1.如何停止/启动Apache We ...

  5. 使用jtest工具压测Apache Traffic Server

    置顶声明:下面的内容来自于赵永明的ATS博客, 本文是在他的指导和自身实践基础上整理而成.这里对豪哥的无私热心帮助表示无限感激! 一.概述 1.压力测试的定义 很多情况下,大家都希望在服务器上线前.业 ...

  6. Apache HTTP Server Version 2.2 文档中文版

    模块索引 | 指令索引 | 常见问题 | 词汇表 | 站点导航 Apache HTTP Server 版本2.2 Apache > HTTP Server > 文档 > 版本2.2 ...

  7. Apache HTTP Server搭建虚拟主机

    目录: Apache简介 安装Apache HTTP Server软件 配置文件解析应用案例 Apache简介 Apache HTTP Server项目是在Windows与Unix等平台上都可以运行的 ...

  8. apache http server指的是什么

    这文章主要介绍了apache http server指的是什么,具有一定借鉴价值,需要的朋友可以参考下.希望大家阅读完这篇文章后大有收获.下面让小编带着大家一起了解一下. 篇 Apache HTTP ...

  9. Apache httpd Server 配置正向代理

    背景 代理(Proxy),位于客户端与实际服务端之间,当客户端需要请求服务端内容时,先向代理发起请求,代理将请求转发到实际的服务器,再原路返回.也可以在代理服务器设置缓存,将实际服务器上不常变化的内容 ...

最新文章

  1. cpu调度的最小单位_Linux CFS调度器
  2. 年度总结——文字留住岁月,情感点缀年华
  3. access denied for_abm怎么样?ACCESS集团携8大国际品牌在进博会首秀,展示abmr 硬核实力!...
  4. 解决IntelliJ Idea中文乱码问题、修改IDEA编码
  5. android app应用后台休眠,安卓手机锁屏后程序自动关闭,怎么设置手机app允许锁屏后台运行...
  6. 我更爱荷叶freeeim
  7. broadcast receiver 接收设备重启意图( boot_completed Broadcast Intent)而重启定时器
  8. KVM虚拟化常见问题
  9. 或许你不知道的10条SQL技巧
  10. 凯撒密码的Java实现
  11. MATLAB | 迟到的圣诞树绘制
  12. 【Fate/kaleid liner 魔法少女☆伊莉雅】系列中实践的、新世代的动画摄影工作流...
  13. Android6.0权限的处理
  14. java 数字拆分_如何在java中分割数字?
  15. 路由 OSPF简介、OSPF与其它路由的区别、OSPF区域概念、OSPF路由代名词IR、BR、ABR、ASBR概念简介。
  16. 绘制同心圆-第12届蓝桥杯Scratch省赛1真题第3题
  17. 测试、前端、产品经理的一般要求
  18. leetcode_345 Reverse Vowels of a String
  19. c语言程序设计项目实训总结,c语言程序设计实训总结.docx
  20. python 八卦图

热门文章

  1. js object 常用方法总结
  2. java 程序实现对图片的压缩生成缩略图并可设定长宽、尺寸压缩率、图片质量
  3. EF框架中,在实体中手动更新字段,数据库数据未同步到程序中应该怎么解决呢?
  4. java实现遍历树形菜单方法——OpenSessionView实现
  5. 2019蓝桥杯省赛---java---C---6(旋转)
  6. 文章中文字乱码问题解决办法集合
  7. Java int 转大端序、小端序
  8. 虚拟机安装centeros7 无法连接网络 virsh命令找不到 删除多余的vir0 不然dubbo会有问题
  9. 计算字典的个数_[LeetCode] 440. 字典序的第K小数字
  10. wireshark tcp抓包分析_网络分析系列之八_使用Wireshark抓包