我有一个用 Java 8 开发的 Java Web 应用程序,它部署在两个运行在 Oracle Linux Server 7.5 上的 tomcat 8.5.33 集群服务器上。问题,如下。
在过去的几周里,这场战争一直在持续部署,没有任何问题,问题是它突然开始工作非常缓慢。
经过调查,我想出了一些原因和解决方案,但是,它们似乎都不是我问题的原因。
起初我以为这可能是内存泄漏或类似的情况,但在看到情况并非如此之后,重新启动系统以防万一,并为 tomcat 提供更多内存以供使用,但没有任何效果。我还发现问题可能是由太大的 catalina.out 文件引起的,但事实并非如此。
在查看由 tomcat 生成的日志时,除了:
05-Dec-2018 13:51:28.412 SEVERE [main] org.apache.catalina.ha.deploy.FarmWarDeployer.start FarmWarDeployer can only work as host cluster subelement!
这似乎是一个集群错误,但正如我所调查的那样,这不应该是我的问题的原因,除了日志之外,它还在不断地记录:
05-Dec-2018 15:09:16.832 FINE [ContainerBackgroundProcessor[StandardEngine[Catalina]]] org.apache.catalina.session.ManagerBase.processExpires Start expire sessions StandardManager at 1544018956832 sessioncount 1
05-Dec-2018 15:09:16.833 FINE [ContainerBackgroundProcessor[StandardEngine[Catalina]]] org.apache.catalina.session.ManagerBase.processExpires End expire sessions StandardManager processingTime 1 expired sessions: 0
奇怪的是,在我的 webapp 日志中,您可以看到日志之间的时间过长。每次调用 servlet 时都会随机发生这种情况,一切正常,直到随机日志(随机,因为有时它从一个日志开始,另一次从另一个日志开始)日志开始每 10 秒写入一次。
Log4j2 2.11 用于日志,这里是一些日志的示例:
2018 年 5 月 12 日 11:53:18 信息
2018 年 5 月 12 日 11:53:18 信息
2018 年 5 月 12 日 11:53:18 信息
2018 年 5 月 12 日 11:53:18 信息
2018 年 5 月 12 日 11:53:38 信息
2018 年 5 月 12 日 11:53:48 信息
2018 年 5 月 12 日 11:53:58 信息
2018 年 5 月 12 日 11:54:08 信息
2018 年 5 月 12 日 11:54:18 信息
2018 年 5 月 12 日 11:54:28 信息
2018 年 5 月 12 日 11:54:38 信息
2018 年 5 月 12 日 11:54:48 信息
2018 年 5 月 12 日 11:54:58 信息
2018 年 5 月 12 日 11:55:08 信息