压力testingApache Tomcat

我该如何强调testingApache Tomcat应用程序?
我尝试使用Jmeter,但会在一定数量后从Jmeter得到错误:

java.net.ConnectException: Connection timed out: connect at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(Unknown Source) at java.net.PlainSocketImpl.connectToAddress(Unknown Source) at java.net.PlainSocketImpl.connect(Unknown Source) at java.net.SocksSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at sun.net.NetworkClient.doConnect(Unknown Source) at sun.net.www.http.HttpClient.openServer(Unknown Source) at sun.net.www.http.HttpClient.openServer(Unknown Source) at sun.net.www.http.HttpClient.<init>(Unknown Source) at sun.net.www.http.HttpClient.New(Unknown Source) at sun.net.www.http.HttpClient.New(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source) at org.apache.jmeter.protocol.http.sampler.HTTPJavaImpl.sample(HTTPJavaImpl.java:479) at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:62) at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1054) at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1043) at org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:416) at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:271) at java.lang.Thread.run(Unknown Source) 

该消息表明,JMeter试图连接到您的应用程序,但无法。 这通常意味着Tomcat已经停止了对请求的响应,因为你遇到了一些限制。 Tomcat开始处理请求的线程数量有限制,并且Java VM的限制可以阻止请求被处理(最有可能是前者)。

JMeter是我发现执行应用程序实际压力的最佳工具之一,但是您也可能发现Java Melody是与JMeter一起使用的宝贵工具。 它可以提供更深入的视图,例如你的应用程序正在做什么(例如,它使用多less内存,不同页面的响应时间,垃圾收集的频率等等)。 它有很多漂亮的图表。

你也应该看看这个给你指点,当涉及到调整tomcat(加上官方文档,以确保某些事情仍然有效或适用于您的情况)。

如果这是一个使用频繁的系统,我也会考虑安装Apache Native Libraries (Tomcat在启动时会在日志中提示你)。 testing你的应用程序之前和之后,看看他们是否有所帮助(他们用C语言而不是Java来编写Tomcat的某些部分来提高性能,特别是实际的连接处理部分和某些encryption函数)。

那个数字有多高?
你能告诉我们更多关于应用程序的信息吗?
你计划的部署有多严重?

如果您使用的是Windows XP,则有一些称为半开连接的限制,这在过去造成了一些问题。 它和你的情况类似,一切正常,直到达到一定数量的并行连接。
这是我如何解决这个问题。

我会把它当作testing,但是失败了!

替代工具是Apache的工作台,或只是在蜘蛛模式。

或者更复杂的工具,如HP Load Runner或快速testing专业版。

tomcat手册有关于最大同时请求的说法,所以你可能不得不调整系统来达到你的请求;

在服务器启动时,此连接器将创build多个请求处理线程(基于为minSpareThreads属性configuration的值)。 每个传入请求在该请求的持续时间内都需要一个线程。 如果接收到的并发请求数多于当前可用请求处理线程可以处理的请求数,则会创build额外的线程,直到configuration的最大值(maxThreads属性的值)。 如果还有更多的并发请求被接收到,它们被堆栈在由连接器创build的服务器套接字中,直到configuration的最大值(acceptCount属性的值。任何进一步的同时请求都会收到“连接被拒绝”错误,直到资源可用来处理它们。
http://tomcat.apache.org/tomcat-5.5-doc/config/http.html