Что это значит

Ядро Linux завершило процесс сигналом 9, потому что память кончилась. Код выхода 137 означает именно это (128 + 9). Бывает два случая. Контейнер упёрся в собственный лимит: в логе ядра Memory cgroup out of memory. Память кончилась на всём сервере, и ядро выбрало самый большой процесс. Вторым обычно оказывается база или сервис RX.

Сам процесс об этом ничего не пишет: его лог обрывается на полуслове.

Как проверить

dmesg -T | grep -i -E "out of memory|killed process" | tail
docker inspect -f '{{.Name}} oom={{.State.OOMKilled}} restarts={{.RestartCount}}' $(docker ps -aq)
docker stats --no-stream
kubectl describe pod <под> | grep -A5 "Last State"

Что сделать

  1. Понять, утечка это или тесный лимит. Снимите потребление памяти дважды с разницей в сутки при похожей нагрузке. Только растёт: утечка, нужны разработчики. Держится у лимита ровно: лимит мал.
  2. Тесный лимит поднять с запасом от 20 до 30 % над рабочим потреблением.
  3. Для Java и .NET проверить, что среда знает о лимите контейнера. Иначе куча считается от памяти сервера.
  4. Если убивают на уровне сервера, сложить потребности: база, брокер, поиск и сервисы на одном сервере должны помещаться в его память с запасом.

rxdoctor показывает убитые контейнеры и занятость памяти к лимиту пунктами OS-06 и OS-07. Командой rxdoctor diff удобно сравнить два замера.