Какова хорошая стратегия для диагностики сервера приложений Java, который перестал отвечать?
У меня есть установка OpenSSO, работающая на Glassfish. Все достаточно просто с минимальной настройкой, чтобы система работала. Я начал сталкиваться с проблемами, когда сервер перестанет отвечать. Он будет принимать запросы, но зависать на ответы. Примерно через двадцать минут все запросы завершаются молниеносно, и все возвращается в норму. К сожалению, журналы не показывают ничего необычного, что могло бы вызвать это.
То, что я ищу, это общая стратегия. Как вы будете заниматься диагностикой и устранением подобных проблем на серверах приложений Java?
Спасибо!
2 ответа
Решение
Вот несколько общих советов по диагностике проблем Java.
- Последние JDK поставляются с VisualVM. Вы можете прикрепить это к работающему экземпляру JVM, чтобы контролировать поток и использование памяти.
- Если вы работаете в Linux, вы можете использовать kill -3, чтобы получить дамп потока и найти взаимоблокировки с помощью Thread Dump Analyzer.
- Посмотрите, какую информацию Glassfish может предоставить через JMX. Затем вы можете использовать JConsole, чтобы присоединиться к процессу и просмотреть информацию JMX во время выполнения.
- Вы упоминаете, что журналы ничего не показывают. Если это повторяющаяся проблема, возможно, вам следует увеличить уровень журнала.
Я слышал хорошие вещи о Glassbox, и есть презентация об использовании Glassbox с Glassfish плюс другие варианты.