首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tomcat压力测试超时

Tomcat压力测试超时
EN

Stack Overflow用户
提问于 2011-11-15 14:17:42
回答 2查看 2K关注 0票数 3

我目前正在调查以下系统的问题:

  • 3.2 GHz 8-核心机,24 GB
  • Debian 6.0.2
    • ulimit -n 4096
    • ulimit 4096
    • ulimit -n

  • -Xmx20g

  • Tomcat 6.0.28

caching

  • MySQL 5.0.51a (通过hibernate和一些手工JDBC查询)
    • 也有很大的空间

我正在用每分钟2000次的远程请求测试对服务器的最常见的请求。测试工具是最新的jMeter。平均响应时间约为65 ms,最小为35 ms,最大值为4000 ms(极少数情况下,但有原因)。

就我所观察到的htop而言,系统规范至少足以满足每分钟3倍以上的请求。(Avg.CPU: 25%,RAM: 22 is中的5%)服务器本身一直是可访问的。(在运行测试时不断地敲击它。)

重要的是,每个请求都会给本地tomcat带来3个额外请求,其中第二个请求最终获得所需数据,最后一个请求用于统计数据: jMeter(1) -> RESTeasy-服务(2) ->?-服务(2) ->数据-服务(2)-(新线程)>统计-服务(2)

(1)是我的jMeter测试服务器,远离(2),它是tomcat服务器。是的,建筑可能有点奇怪,但那不是我的错。^^

我将线程管理切换为server.xml中的池。设置1000个最大线程,从默认的200个增加到10个空闲,从4个增加。我注意到,并发线程的数量几乎没有减少,而是稳步上升到tomcat的最大值。htop报告160个线程,而tomcat被停止。刚开始的时候大约有460人。(服务似乎开始了几个.)在每分钟用2000次请求访问服务器几个小时(有时更少)之后,htop说有1400个任务。这似乎是我开始在jMeter中获得超时的关键。因为这是非常耗时的,我没有看过一千次,所以我不能坚持,这是原因,但这几乎是发生的。

主要问题:

  1. Math告诉我,并发使用的线程计数永远不应该超过600。(34次请求*4次请求*4秒= 544次,甚至更少,但估计600次应该可以)。就我所理解的线程池的概念而言,当空闲时间过长时,应该释放和停止未使用的线程。还有什么办法可以让我得到一千次空转吗?线?这可以吗?在其中一个请求处理器中手动启动的线程可以拒绝tomcat线程为released?
  2. Shouldn't,有任何日志消息告诉我tomcat无法为请求创建/获取线程吗?
  3. 还有其他想法吗?我花了很长时间研究这个问题,现在tomcat耗尽了它的线程池,这似乎是导致这些奇怪超时的唯一有效原因。但也许有人有另一个提示。--

谢谢你,特别是如果你能把我从这里救出来.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-16 15:08:33

经过几个小时和几天的发人深省之后,我发现当Tomcat达到线程限制时,当我们处于这3个本地连接打开的中间时,超时就会发生。我想,如果它一旦达到这个限制,一个线程正在等待另一个线程打开,而前面的线程不会关闭。在德语里我会叫它Teufelskreis。^^

不管怎么说,解决办法是把最大的线程提高到一个可笑的高度:

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="10000" minSpareThreads="10"/>

我知道这不应该是一条路,但不幸的是,我们大家都知道我们的架构有点不切实际,没有人有时间去改变它。

希望它能帮到别人。=)

票数 1
EN

Stack Overflow用户

发布于 2012-03-04 15:15:38

我想,这个问题需要理解底层的HTTP/1.1或HTTP/1.1保持活动连接。

如果将其用于REST服务,则可能希望将连接器配置中的maxKeepAliveRequests参数设置为1。

代码语言:javascript
复制
    <Connector port="8080" protocol="HTTP/1.1" 
           connectionTimeout="20000"
           maxKeepAliveRequests="1" 
           redirectPort="8443" />

这个设置可以在$CATALINA/conf/server.xml中找到。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8137712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档