У меня есть tomcat веб-приложение на VPS, и tomcat иногда (примерно раз в месяц) аварийно завершает работу со следующей ошибкой в catalina.out:
Предупреждение Java HotSpot™ 64-Bit Server VM: Исключение java.lang.OutOfMemoryError при отправке сигнала SIGTERM на обработчик - может потребоваться принудительное завершение работы виртуальной машины.
Вот некоторые подробности о моей конфигурации:
VPS: debian-5.0-x86_64
Оперативная память: 2,5 ГБ,
виртуальных процессоров: 8
Жесткий диск: жесткий диск 60 ГБ — 70% свободно
Tomcat 7.0
версия java:
версия java "1.6.0_18"
Среда выполнения OpenJDK (IcedTea6 1.8.13) (6b18-1.8.13-0+squeeze1)
64-разрядная виртуальная машина сервера OpenJDK (сборка 14.0-b16, смешанный режим)
Параметры Java: -Xms512m -Xmx1024m
У меня также есть Apache-PHP на этом сервере.
Я отслеживаю загрузку сервера с помощью Munin, и он показывает, что загрузка памяти и ЦП всегда стабильна, и перед сбоем не было никакого увеличения.
Я также регистрирую использование памяти java через класс java.lang.Runtime, и это показывает, что jvm всегда использует память max200Mb, и перед сбоем не было увеличения. Последний журнал перед сбоем был 40 секунд назад, и в это время использовалась память: 152 МБ.
Мое веб-приложение также запускает 6-7 потоков, которые собирают данные из разных общедоступных API. Эти потоки запускаются, когда запускается tomcat, и они всегда работают с периодическими спящими режимами.
Скажите, пожалуйста, почему он вылетает? Как найти причину?