ubuntu - Azure 上的 Lucee/Java 与 100% 的 CPU 使用率挂钩
问题描述
我们最近几天一直遇到的问题。出于某种原因,Java 被固定在 100% 的 cpu 使用率上。如果我们禁用 lucee 服务,cpu 使用率就会下降到正常水平。一旦我们启用它,cpu 使用率立即飙升至 100%。
完整路径是
/opt/lucee/jdk/jre/bin/java -Djava.util.logging.config.file=/opt/lucee/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
我们运行 Lucee 的其他服务器显示此进程通常具有大约 1-3% 的 cpu 使用率。
- 我们已经多次重启 Ubuntu 无济于事。
- 我们已经禁用了所有端口,以防出现一些奇怪的流量导致问题,但同样无济于事。
- 我们已经验证没有运行 lucee 脚本任务。
- 我们确实有一个与 Microsoft 一起运行的单独 SQL 服务实例,它没有显示任何奇怪的数据库使用情况。我们还有大约 5 台其他服务器访问相同的数据库并且没有遇到此问题。
- 我已将 Lucee 从 5.3.4.80 降级到 5.2.9.3,再次没有运气
服务器的其他信息
OS Linux (4.4.0-174-generic) 64bit
Servlet Container Apache Tomcat/8.5.6
Java 1.8.0_112 (Oracle Corporation) 64bit
这最初是在大约两周前发生在我们身上的。我们于 2 月 24 日星期一进来,到美国东部时间上午 9 点左右,我们的一台服务器开始遇到此问题。我们设置了一个单独的 Azure VM 并复制了我们所有的文件,并让一切正常运行。现在,两周后,另外两台服务器开始出现同样的问题。
感谢你们可以提供的任何帮助。
解决方案
我在运行 Ubuntu 和 Java 8_181 的 AWS 服务器上遇到了同样的问题。它在半夜突然开始。顶部显示 2 个 CPU 已满载,就像您的一样。重新启动 Lucee/Tomcat 并重新启动没有效果。
Fusionreactor 指出了调度任务的问题,其中线程可视化器显示了两个旋转任务,堆栈跟踪类似于下面。
我杀死了这些线程,旋转停止了。然后我可以看到我的两个计划任务在 Lucee 管理员中被标记为粉红色的永久停止。重新启用这些进程并重新启动 Lucee 又带来了问题,所以我一次又一次地杀死它们,任务在 Lucee 管理员中变成粉红色。他们也没有按照正常的时间表运行。其他计划任务仍然运行正常,几个小时后一切正常。
然后我删除并重新创建了两个似乎是问题的计划任务,并重新启动了 Lucee。这两项任务如期进行。因此,我得出结论,不知何故,这两个任务的时间信息已经损坏,当 Lucee 试图计算下一个运行时间时,这会导致自旋。Luce 源代码似乎在旋转点附近有一个“while(1)”循环,它似乎在增加一个日期变量——我怀疑这就是问题所在。
总之,拍摄计划任务并重新创建,您可能有一个解决方法。
java.util.SimpleTimeZone.getOffsets(SimpleTimeZone.java:551) - 锁定 <0x5d7f0b89> (a java.util.SimpleTimeZone) java.util.SimpleTimeZone.getOffset(SimpleTimeZone.java:540) sun.util.calendar.ZoneInfo.getOffsets (ZoneInfo.java:293) sun.util.calendar.ZoneInfo.getOffsets(ZoneInfo.java:236) java.util.GregorianCalendar.computeFields(GregorianCalendar.java:2340) java.util.GregorianCalendar.computeFields(GregorianCalendar.java:2312) ) java.util.Calendar.setTimeInMillis(Calendar.java:1804) java.util.GregorianCalendar.add(GregorianCalendar.java:1076) lucee.runtime.schedule.ScheduledTaskThread.calculateNextExecution(ScheduledTaskThread.java:219) lucee.runtime.schedule .ScheduledTaskThread._run(ScheduledTaskThread.java:121) lucee.runtime.schedule.ScheduledTaskThread.run(ScheduledTaskThread.java:87)
推荐阅读
- .net - VB.Net检查标点符号
- node.js - 在任何进程执行期间检查 Apify 的状态
- android-studio - 在 Android Studio 中找不到 MainActivity.java 文件
- javascript - 为什么 ant design 不在 reactjs 中加载 CSS
- amazon-web-services - Vue & Axios + AWS API Gateway & Lambda - CORS + POST 不工作
- python - 合并图像直方图的相似分箱
- javascript - 使用 formData 通过 ajax 发布时,$_POST 保持为空
- javascript - 类型错误:firebase__WEBPACK_IMPORTED_MODULE_2__.firestore 不是函数
- symfony - 添加自定义 Symfony 通知程序通道
- druid - 我可以加入两个数据源并在德鲁伊中永久创建一个新的数据源吗