如何诊断具有空闲应用程序的Web服务器无法响应的原因?

时间:2015-03-01 15:25:25

标签: performance tomcat java-ee tomcat7

我有一个数字海洋液滴(512MB RAM,20GB SSD磁盘,Ubuntu 13.10 x64)

  1. MongoDB实例和
  2. Tomcat 7服务器
  3. 运行。

    在Tomcat服务器上,安装了以下应用程序

    1. 基于Apache CXF的应用程序,它接受进程Web服务请求,与数据库交互并执行预定作业,
    2. Vaadin申请,
    3. JSF(Primefaces)应用程序和
    4. Psi Probe
    5. 当我

      1. 重启Tomcat,
      2. 使用Vaadin和/或JSF应用程序,
      3. 然后几个星期在那台机器上什么都不做(在那段时间里基本上是空闲的),
      4. 然后尝试打开JSF和/或Vaadin应用程序,
      5. 我发现网站没有响应(在浏览器中输入网址后没有显示任何内容)。

        当我重新启动Tomcat(sudo service tomcat7 restart)时,一切都恢复正常。我没有在Tomcat日志中看到任何明显的问题。

        我怎样才能找到答案,

        1. 问题是在Tomcat端(其中一个应用程序即使在空闲时也消耗太多资源)或在OS端(机器上没有任何事情发生,因此操作系统将自己置于“休眠”模式)和< / LI>
        2. 如果问题出在Tomcat上,究竟是哪个应用程序导致了它?

2 个答案:

答案 0 :(得分:3)

请从上到下开始。

  

然后尝试打开JSF和/或Vaadin应用程序,

     

我发现网站没有响应(我输入后没有显示任何内容   浏览器中的URL。)

  1. 在重新启动sudo service tomcat7 status和/或ps -ef | grep tomcat之前检查服务是否仍在运行
  2. 使用netstat -patune | grep <portnumber, e.g. 443>检查服务器是否正在侦听已配置的端口
  3. 如果请求到达服务器,请检查您的httpd / Apache / Tomcat访问日志,如果是,请检查是否存在与请求相关的错误或超时
  4. 检查数据库连接是否仍然可以
  5. 要强制执行某些错误日志,请尝试更改Tomcat连接池配置的maxIdle,maxActive和maxWait属性。 maxWait默认值为-1,有时在这几周内创建的连接将永远等待。

答案 1 :(得分:0)

@Patrick提供了一些很好的基础测试。

我注意到你只有512 MB的RAM。使用一些相当强大的软件,如tomcat,加上MongoDB,你的机器可能只是过载。

基于此,我建议另外检查几件事:

sudo free

应该告诉你正在使用多少内存,以及你使用多少交换空间。

sudo top

将告诉您哪个进程使用的内存最多。您可能希望按内存对顶部输出进行排序(默认情况下通常是CPU利用率)。

最重要的是,检查/ var / log中的日志文件(特别是/ var / log / messages)。您可能会发现内核已杀死您的某个进程(可能是tomcat)。