java - Tomcat 8.5.33 Java WebApp 突然变慢了
问题描述
我有一个用 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 信息
解决方案
在我们的系统中遇到了同样的问题。在我们的例子中,它是由用于启动 Tomcat 的 Linux 用户引起的,它没有足够的权限来运行所有 Tomcat 应用程序,所以我只是通过使用sudo命令启动它来解决它。
sudo $CATALINA_HOME/bin/startup.sh
我没有关于为什么这解决了问题的信息,以及是什么导致了所有的缓慢,导致时间需要的原因(只是想尽快解决它)。希望这适合你。
推荐阅读
- reactjs - 更改 React 状态需要时间,因此它在功能逻辑中采用旧状态
- c# - Unity - 在一行中获取组件并检查空值?
- python-3.x - 从太阳的位置计算准确的日期和时间 - 88° 度
- windows - 执行 Spark 流式传输以从 Kafka 主题读取数据时发生错误
- android - 当应用程序在后台运行时,原生 Android 中的 Fire Base FCM
- typescript - 代替字符串枚举,使用联合类型和静态声明
- r - 普通和一样。基于因子的洛伦兹曲线给出对比结果
- javascript - 通过考虑每个范围的值共享剩余的 %,在 4 个范围输入之间共享 100%
- c++ - 为什么 [[no_unique_address]] 属性在某些情况下不起作用?
- fortran - MPI fortran 程序因 mpi 进程数限制而挂起