【问题标题】:Lucee/Java on Azure Pegged At 100% CPU UsageAzure 上的 Lucee/Java 与 100% CPU 使用率挂钩
【发布时间】:2020-03-08 23:12:59
【问题描述】:

关于今天的wtf节目正在进行中......

过去几天我们遇到的问题。出于某种原因,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 使用率。

  1. 我们已经多次重启 Ubuntu 无济于事。
  2. 我们已禁用所有端口,以防出现一些奇怪的流量导致问题,但同样无济于事。
  3. 我们已验证没有运行 lucee 脚本任务。
  4. 我们确实有一个与 Microsoft 一起运行的单独 SQL 服务实例,它没有显示任何奇怪的数据库使用情况。我们还有大约 5 台其他服务器访问同一数据库并且没有遇到此问题。
  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 并复制了我们所有的文件,并让一切正常运行。现在,两周后,另外两台服务器开始出现同样的问题。

感谢你们提供的任何帮助。

【问题讨论】:

  • Tomcat 日志中还有其他线索吗? /opt/lucee/tomcat/logs/catalina.out?

标签: ubuntu resources cpu lucee


【解决方案1】:

我在运行 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) - 锁定 (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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    • 2015-04-05
    相关资源
    最近更新 更多