我目前正在调查以下系统的问题:
caching
我正在用每分钟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中获得超时的关键。因为这是非常耗时的,我没有看过一千次,所以我不能坚持,这是原因,但这几乎是发生的。
主要问题:
谢谢你,特别是如果你能把我从这里救出来.
发布于 2012-04-16 15:08:33
经过几个小时和几天的发人深省之后,我发现当Tomcat达到线程限制时,当我们处于这3个本地连接打开的中间时,超时就会发生。我想,如果它一旦达到这个限制,一个线程正在等待另一个线程打开,而前面的线程不会关闭。在德语里我会叫它Teufelskreis。^^
不管怎么说,解决办法是把最大的线程提高到一个可笑的高度:
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="10000" minSpareThreads="10"/>
我知道这不应该是一条路,但不幸的是,我们大家都知道我们的架构有点不切实际,没有人有时间去改变它。
希望它能帮到别人。=)
发布于 2012-03-04 15:15:38
我想,这个问题需要理解底层的HTTP/1.1或HTTP/1.1保持活动连接。
如果将其用于REST服务,则可能希望将连接器配置中的maxKeepAliveRequests参数设置为1。
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
maxKeepAliveRequests="1"
redirectPort="8443" />这个设置可以在$CATALINA/conf/server.xml中找到。
https://stackoverflow.com/questions/8137712
复制相似问题