Tomcat7 на докере - проблема не отвечает
У нас есть tomcat7, работающий поверх контейнера Docker (официальный образ Docker). В часы пик через некоторое время кот зависает и больше не может обслуживать запросы (многие запросы застряли и ждут бесконечно).
Вот детали 'manager-app':
JVM
Свободная память: 627,21 МБ Общая память: 1751,50 МБ Максимальная память: 10923,00 МБ
HTTP-апрель-8080
Максимальное количество потоков: 500 Текущее количество потоков: 500 Текущий поток занят: 500 Количество оставшихся в живых сокетов: 0 Максимальное время обработки: 871759 мс Время обработки: 412926,78 с Число запросов: 3466023 Количество ошибок: 326 Полученных байт: 354,74 МБ Отправленных байт: 1371,40 МБ
Раздел подключений
Записи X500 как это:
S 166957 мс 0 КБ 0 КБ ip1 ip2 api.app.url POST /do1 HTTP/1.1 ...
Есть идеи, почему это происходит?
PS - Кажется, что общая память слишком мала (учитывая, что свободной памяти значительно меньше), что может вызвать это?
1 ответ
Java-приложение может работать не так, как ожидалось, в контейнере, таком как Docker, в основном это связано с тем, что сборщик мусора не дает достаточно квоты процессора с большим количеством запущенных потоков, что может привести к худшему.
Я предлагаю вам взглянуть на журнал сбора мусора и проанализировать Full GC, это может указывать на нехватку памяти, а также на загрузку процессора.
Посмотрите на эту статью, это может помочь