在大量编辑/上传/下载的繁忙时间,应用程序会变得迟钝和无响应。我收到Wicket“PageMap仍然锁定”错误。雄猫似乎一直在蹒跚前行。内存使用是可管理的,大约50万。
我设置了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秒更新一次。大多数情况下,这会快速返回一个空响应。偶尔会有一系列数据库活动,大量数据(几MB)可能会被发送回客户端。
那么这81%的活动是什么?一些连接速度非常慢的客户端是否会导致tomcat线程等待传入的请求主体,从而使其陷入困境?
有人见过类似的情况,或者对如何测试/排除故障/修复有什么建议吗?