Lucee / Java on Azure Pegged при 100% загрузке процессора - PullRequest
0 голосов
/ 09 марта 2020

enter image description here В сегодняшнем эпизоде ​​wtf продолжается .....

Проблема, с которой мы столкнулись в течение последних нескольких дней. По какой-то причине Java получает привязку при 100% загрузке процессора. Если мы отключим службу lucee, загрузка процессора снизится до нормального уровня. Как только мы включим его, загрузка процессора сразу возрастет до 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%.

  1. Мы перезапустили Несколько раз Ubuntu безрезультатно.
  2. Мы отключили все порты на случай, если какой-то странный трафик c вызвал проблемы, опять же безрезультатно.
  3. Мы убедились, что нет Выполняются задачи сценариев lucee.
  4. У нас есть отдельный SQL экземпляр службы, работающий с Microsoft, который не показывает странного использования БД. У нас также есть около 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

Это первоначально произошло с нами около двух недель go. Мы пришли в понедельник 2/24, и примерно в 9 часов утра КТ один из наших серверов начал испытывать эту проблему. Мы установили отдельную Azure виртуальную машину, скопировали все наши файлы и получили все в порядке. Теперь, две недели спустя, на двух других серверах возникает такая же проблема.

Цените любую помощь, которую вы, ребята, можете предоставить.

1 Ответ

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

У меня была такая же проблема на AWS сервере с Ubuntu и Java 8_181. Это началось внезапно посреди ночи. В верхней части отображались 2 полностью загруженных процессора, как у вас. Перезапуск Lucee / Tomcat и перезагрузка не дали никакого эффекта.

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

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

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

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

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 (Календарь. java: 1804) java .util.GregorianCalendar.add (GregorianCalendar. java: 1076) lucee.runtime.schedule.ScheduledTaskThread.calculateNextExecution (ScheduledTaskThread. * 10) .runtime.schedule.ScheduledTas kThread._run (ScheduledTaskThread. java: 121) lucee.runtime.schedule.ScheduledTaskThread.run (ScheduledTaskThread. java: 87)

...