Lucee внезапно высокая загрузка процессора Java - PullRequest
0 голосов
/ 29 марта 2020

Запуск Lucee Lucee 5.2.7.62 в Ubuntu 16 / Java 8_181.

Через пару дней go загрузка ЦП начала работать примерно на 50%, что, по-видимому, связано с двумя Java нитки, принадлежащие Люси спиннинг. Перезапуск Lucee и O / S не имеет никакого эффекта - поведение при вращении запускается сразу после запуска Lucee.

При детализации с помощью FusionReactor проблема, похоже, связана с запланированными задачами. Похоже, что до этой ошибки не произошло никаких изменений в запланированных задачах. Сервер находится в часовом поясе Великобритании - мне интересно, связана ли проблема с переключением с GMT на BST в эти выходные, хотя проблема началась за пару дней до этого.

Когда я укладываю трассировку вращающихся потоков в Fusionreactor Я обычно вижу что-то вроде этого:

java.util.SimpleTimeZone.getOffsets(SimpleTimeZone.java:551)
- waiting on <0x5d7f0b89> (a java.util.SimpleTimeZone held by thread 84, Thread-50)
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)


1 Ответ

0 голосов
/ 30 марта 2020

Fusionreactor указал на проблему с запланированными задачами, когда в Thread Visiualizer показаны две задачи вращения с трассировкой стека, подобной приведенной ниже.

Я уничтожил эти потоки, и вращение прекратилось. После этого я мог видеть две мои запланированные задачи, помеченные розовым цветом как навсегда остановленные в администраторе Lucee. Повторное включение этих процессов и перезапуск Люси вернули проблему назад, поэтому я снова и снова убивал их, и задачи в администраторе Люси становились розовыми. Они также не бегали по своему обычному графику. Другие запланированные задачи оставались работающими, и через несколько часов все было в порядке.

Затем я удалил и заново создал две запланированные задачи, которые, казалось, были проблемой, и перезапустил Люси. Две задачи выполнялись по графику. Поэтому я пришел к выводу, что каким-то образом информация о сроках выполнения этих двух задач была искажена, что вызвало вращение, когда Люси пыталась рассчитать время следующего запуска. Исходный код Luce вокруг точки, в которой он, кажется, вращается, имеет 'while (1)' l oop, который, как представляется, увеличивает переменную даты - я подозреваю, что именно здесь все застряло.

В итоге, сделайте снимок запланированных задач и воссоздайте, и у вас может быть обходной путь.

...