0

当我向我的 Web 服务发送大约 100 个用户时,我得到响应并且 Web 服务运行良好,但是当我检查 1000 个并发用户时,没有一个请求得到回复。

我正在使用 jmeter 进行测试。

当我发送 1000 个并发用户时,我的 glassfish 管理面板在浏览器中超时,仅在 4-5 分钟后打开。wsdl URL 也是如此。

我已经在我们的 LAN 上测试了我的 Web 服务,它适用于 2000 个查询,没有任何问题。

请帮我找到解决方案。

编辑 1.0

更多发现

您好,根据您的建议,我所做的是我只是在 Web 服务函数调用中返回了字符串,没有查找,没有 dao,什么都没有......只是返回一个字符串

线程池是 2000 没有问题。

现在,当我为 1000 个用户运行 jmeter 时,它们的运行速度非常快,并返回了大约 200 个请求的响应

因此,这意味着我的 PC 运行 Windows 7 和 i5 处理器和 4GB RAM 的主机性能超过了具有 4GB RAM 和 xeon 5*** 8 核的 hostgator 专用服务器:(

这不是我每月支付 220 美元的费用....

如果我的发现是错误的,请纠正我,我在本地两台电脑上测试了我的应用程序,它可以顺利处理 2000+msgs

编辑 1.1

经过大量阅读和实践后,我得出一个结论,即网络延迟是造成这种行为的原因。

我在 glassfish 的管理面板中增加了 bean 池的大小,它有助于将并发用户数提高到 300,但是无论我在池中保留了多少 bean,问题都会再次出现。

所以朋友的问题是:请建议我可以在 Glassfish 的管理面板中更改的一些其他设置,以从根目录中删除此问题!

4

2 回答 2

1

您需要为服务执行的各个步骤添加一些性能日志记录。它是否执行多个步骤?计算速度慢吗?数据库访问慢?您的连接池不能很好地扩展?是否需要在 Web 服务器中进行调整以实现如此高的并发性?您需要测量这些东西以找到瓶颈,以便消除它们。

于 2012-08-01T04:57:09.367 回答
0

我在服务器中遇到了同样的问题(同时有 200 多个用户),我研究了官方 glassfish 调整指南,但有一个非常重要的参数没有出现。我也使用了 Jmeter,在我的情况下,时间响应呈指数增长,但服务器的处理器保持在低位。

在 glassfish 管理服务器(configurations/server-config/Network config/thread pools/http-thread-pool)中,您可以看到您的服务器可以处理多少用户。(glassfish 2 和 3 中的参数不同)。

Max Queue Size:队列中的最大线程数。–1 值表示队列大小没有限制。

Max Thread Pool Size:线程池中的最大线程数

Min Thread Pool Size:线程池中的最小线程数

空闲线程超时:线程可以在池中保持空闲的最长时间。在此时间到期后,线程将从池中删除。

我建议您将Max Thread Pool Size设置为 100 或 200 来解决问题。

您还可以设置另一个 JMV 变量,例如:

-Xmx/s/m

-服务器

-XX:ParallelGCThreads

-XX:+积极选择

我希望它有所帮助。

于 2012-08-13T10:30:53.583 回答