Java jboss无法处理超过3000个请求

Java jboss无法处理超过3000个请求,java,performance,web-services,jmeter,jboss5.x,Java,Performance,Web Services,Jmeter,Jboss5.x,我创建了一个既有客户端又有服务器的web服务。我想做性能测试。我尝试用一个示例测试计划来执行jmeter。多达3000个请求jboss处理了该请求,但当请求超过3000个时,部分请求未被处理(在无法打开连接的意义上:连接被拒绝)。我必须进行更改,以同时处理10000多个请求。要么是jboss问题,要么是系统吞吐量问题 jmeter配置:300个线程,1秒上升和10个循环上升 系统(服务器配置):Windows7,4G内存 我必须进行更改以同时处理10000多个请求 10000Tomcat中的并发

我创建了一个既有客户端又有服务器的web服务。我想做性能测试。我尝试用一个示例测试计划来执行jmeter。多达3000个请求jboss处理了该请求,但当请求超过3000个时,部分请求未被处理(在无法打开连接的意义上:连接被拒绝)。我必须进行更改,以同时处理10000多个请求。要么是jboss问题,要么是系统吞吐量问题

jmeter配置:300个线程,1秒上升和10个循环上升

系统(服务器配置):Windows7,4G内存

我必须进行更改以同时处理10000多个请求

10000Tomcat中的并发请求(我相信它在JBoss中使用)相当多。在典型的设置(使用阻塞IO连接器)中,每个HTTP连接需要一个线程。这对于普通JVM来说太过分了。在64位服务器机器上,一个线程需要1个MiB(签出
-Xss
参数)。你只有4个GiB

此外,这将扼杀你的表现。您需要数百个内核才能有效地处理所有这些连接。如果您的请求是I/O或数据库绑定的,您将在其他地方看到瓶颈

也就是说,你需要一种不同的方法。请尝试非阻塞I/O或异步servlet(从3.0开始)或。。。向外扩展。默认情况下,Tomcat可以处理100-200个并发连接(合理的默认值),并且排队的连接数量相似。以上的一切都被拒绝了,你可能正在经历这一点

另见

    • 我想到了两个常见的问题

      首先,如果您以普通用户的身份在Linux上运行JBoss,如果您没有编辑limits.conf文件,您可能会遇到“太多打开的文件”。看见对于Linux,每个打开的套接字都算作一个“打开的文件”,因此操作系统可能会因此而阻止您的连接

      其次,传入连接的最大线程池大小默认为200。这限制了并发请求的数量,即同时进行的请求。如果让jmeter执行300个线程,jboss连接器线程池应该更大。您可以在jboss-web.sar/server.xml中的jboss6中找到这一点。在元素中查找“maxThreads”:


      200是单核CPU的建议最大值。除此之外,上下文切换开始产生过多的开销,如Tomasz所说。因此,对于生产使用,双核只能增加到400,四核只能增加到800,等等。

      所以您只有300个并发请求,对吗(300个线程执行10个连续请求)?那么,在客户端或服务器上,您在何处看到“连接被拒绝”?在jemeter响应中。它是从服务器上得到的。你的回复听起来不错!!那么我如何实现一个非阻塞i/O(你是说非阻塞i/O队列还是其他东西)?@Mayilarun:我在我的答案中添加了几个链接。原则上,通过异步Servlet3.0支持,您可以用很少的线程处理多个连接。