java - Tomcat 性能问题

标签 java apache tomcat ssl wicket

我有一个网络应用程序运行非常缓慢,偶尔会挂起。这是一个与学校相关的 Wicket 应用程序,具有报告和编辑功能,也是一个 servlet,自动化客户端使用它通过 HTTPS 获取/发布数据。

在繁忙时间进行大量编辑/上传/下载时,应用程序变得缓慢且无响应。我收到 Wicket“PageMap 仍然锁定”错误。 Tomcat 似乎一直在前进。内存使用是可管理的,大约 50M。

我设置了 YourKit 来获取一些分析信息,在忙碌的时候发现 81% 的 Tomcat CPU 时间花在了这里:

org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run()
org.apache.jk.common.ChannelSocket$SocketConnection.runIt(Object[])
org.apache.jk.common.ChannelSocket.processConnection(MsgContext)
org.apache.jk.common.ChannelSocket.receive(Msg, MsgContext)
org.apache.jk.common.ChannelSocket.read(MsgContext, byte[], int, int)
java.io.BufferedInputStream.read(byte[], int, int)
java.io.BufferedInputStream.read1(byte[], int, int)
java.io.BufferedInputStream.fill()
java.net.SocketInputStream.read(byte[], int, int)
[Wall Time]  java.net.SocketInputStream.socketRead0(FileDescriptor, byte[], int, int, int)

在这个应用程序中,我有大约 250 个客户端通过 SSL 轮询服务器,要求每 30 秒更新一次。大多数时候,这会很快返回一个空的响应。有时,会出现一连串的数据库 Activity ,并且可能会将大量数据(几 MB)发送回客户端。

那么这 81% 的 Activity 来自什么?一些连接速度非常慢的客户端是否会导致 tomcat 线程等待传入的请求主体,从而使 tomcat 线程陷入困境?

有人见过这样的事情,或者对如何测试/排除故障/修复此问题有任何建议吗?

最佳答案

您应该设置一个测试环境并尝试通过负载测试重现它。
这样你就可以找出原因。否则因素太多。
此外,通过这种方式,您可以在不危及产品环境的情况下尝试修复。

关于java - Tomcat 性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1622882/

相关文章:

hibernate - 使用 Hibernate 的 Tomcat 5.5 OutOfMemory 错误

apache - 如何更改 jar 文件在 java Web 应用程序中使用的路径

java - 无法在 Intellij 平台的 spark 上识别 Java 的 DataFrame

java - 尝试安装 eclipse,但我得到 "Java was started but returned exit code = 1"

javascript - Ajax缓存控制

apache - 如何在没有负载平衡的情况下为单个 apache 服务器实现多个 tomcat 实例?

apache - htaccess 重写 index.php 并在没有 www 的情况下重定向

java - 如何阻止鼠标退出窗口?

java - 在客户端/服务器应用程序中将元素添加到服务器端的 arrayList

java - tomcat 和 Apache 之间的适配器