我创建了客户端和服务器的 Web 服务。我想到了做性能测试。我尝试使用带有示例测试计划的 jmeter 来执行它。最多 3000 个请求 jboss 处理了请求,但是当请求超过 3000 个时,一些请求没有被处理(在无法打开连接的意义上:连接被拒绝)。我必须在哪里进行更改以同时处理超过 10000 个请求。是 jboss 问题还是系统吞吐量?
jmeter 配置:300 个线程,1 秒加速和 10 次循环。
系统(服务器配置):Windows 7、4G RAM
最佳答案
Where i have to make the changes to handle more than 10000 request at the same time
10000 并发请求在Tomcat中(我相信在JBoss中使用)是相当多的。在典型设置(使用阻塞 IO 连接器)中,每个 HTTP 连接需要一个线程。这对于普通的 JVM 来说太多了。在 64 位服务器机器上,一个线程需要 1 MiB(查看 -Xss
参数)。而您只有 4 GiB。
此外,number of context switches会扼杀你的表现。您将需要数百个核心才能有效处理所有这些连接。如果您的请求是 I/O 或数据库绑定(bind) - 您会在其他地方看到瓶颈。
话虽如此,您需要一种不同的方法。要么尝试非阻塞 I/O 或异步 servlet(自 3.0 起),要么……向外扩展。默认情况下,Tomcat 可以处理 100-200 个并发连接(合理的默认值),并且排队的连接数量也差不多。上面的所有内容都被拒绝,您可能正在经历这种情况。
另见
关于java - jboss 无法处理超过 3000 个请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11707609/