代码之家  ›  专栏  ›  技术社区  ›  Sam Barnum

Tomcat性能问题

  •  0
  • Sam Barnum  · 技术社区  · 15 年前

    在大量编辑/上传/下载的繁忙时间,应用程序会变得迟钝和无响应。我收到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线程等待传入的请求主体,从而使其陷入困境?

    有人见过类似的情况,或者对如何测试/排除故障/修复有什么建议吗?

    2 回复  |  直到 15 年前
        1
  •  0
  •   thethinman    15 年前

    您应该设置一个测试环境,并尝试通过负载测试来重现这个环境。
    这样你就可以找出原因。否则因素太多了。
    此外,通过这种方式,您可以尝试修复,而不会损害您的产品环境。

        2
  •  0
  •   thethinman    15 年前

    内存使用可能是原因。
    您应该检查java进程的内存使用情况,看看它得到了多少。
    如果还不够,您必须在为tomcat设置Xmx jvm参数的地方设置这些参数。