Первоначально опубликовано on Server Fault, где было предложено задать вопрос здесь.отладка JBoss 100% загрузка процессора
Мы используем JBoss для запуска двух наших ВОЙН. Одно наше веб-приложение, другое - наш веб-сервис. Веб-приложение обращается к базе данных на другой машине и делает запросы к веб-службе. Веб-служба делает запросы JMS другим машинам, агрегирует данные и возвращает их.
У нашего крупнейшего клиента примерно раз в месяц процесс JBoss Java занимает 100% всех процессоров. На машине JBoss имеется 8 процессоров. Наше веб-приложение по-прежнему доступно в течение этого времени, однако на страницы загружается около 3 минут. Перезапуск JBoss восстанавливает все до нормального состояния.
Машина базы данных и все другие машины в порядке, только на работу JBoss влияет. Использование памяти в норме. Использование сети в норме. В журналах JBoss сообщений об ошибках нет.
Я установил тестовую среду как можно ближе к рабочей среде клиента, и я проверил нагрузку на столько же, сколько и количество одновременных пользователей. Я не получил свою тестовую среду для репликации проблемы.
Куда мы идем отсюда? Как мы можем сузить проблему?
В настоящее время единственный, что у нас есть, - это подождать, пока проблема не возникнет в процессе производства сама по себе, а затем выполните некоторую отладку, чтобы определить причину. Пока люди только что перезапустили JBoss, когда возникла проблема, чтобы минимизировать время простоя. В следующий раз, когда это произойдет, они заинтересуют разработчика. Вопрос в следующем, когда это произойдет, что можно сделать, чтобы определить причину?
Мы могли бы установить отдельный экземпляр JBoss в том же поле и установить веб-приложение отдельно от веб-службы. Таким образом, когда возникнет следующая проблема, мы узнаем, какая у WAR проблема (при условии, что это наш код). Это не сужает его, хотя.
Должен ли я включать дистанционный пульт JMX? Таким образом, в следующий раз, когда возникает проблема, я могу подключиться к VisualVM и посмотреть, какие потоки берут процессор и что, черт возьми, они делают. Однако существует ли значительная сторона для включения JMX удаленного в производственную среду?
Есть ли другой способ увидеть, какие потоки есть процессор и получить стек, чтобы посмотреть, что они делают?
Любые другие идеи?
Спасибо!
Здравствуйте. Вы нашли основную причину проблемы с JBoss? У нас такая же проблема время от времени. –
Да, извините за задержку. У нас была запись HashMap двумя потоками одновременно. Если поставить триггеры перефразирования, второй put может привести к тому, что два узла карты будут указывать друг на друга. Следующий переход на HashMap вызовет бесконечный цикл. – NateS