Exit Code 137 означает, что процесс был завершён сигналом SIGKILL (9). В большинстве случаев это делает механизм OOM Killer, когда системе не хватает оперативной памяти.
Основные причины
- Недостаточно RAM
- Превышение лимита памяти в Docker-контейнере
- Утечка памяти в приложении
- Жёсткие ограничения cgroups
Способ 1: Проверка OOM Killer
Проверьте системный лог:
dmesg | grep -i kill
Если в выводе есть упоминание Out of memory, процесс был завершён из-за нехватки RAM.
Способ 2: Увеличение лимита памяти (Docker)
Если ошибка возникает в контейнере:
docker run -m 2g your_image
Или в docker-compose:
deploy:
resources:
limits:
memory: 2g
Способ 3: Добавление swap
Проверьте текущий swap:
free -h
Если swap отсутствует, создайте его:
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
Способ 4: Оптимизация приложения
- Уменьшите потребление памяти
- Проверьте утечки памяти
- Настройте лимиты JVM/Node.js при необходимости
Итог
Exit Code 137 почти всегда связан с нехваткой памяти. Проверка логов, увеличение лимитов Docker и настройка swap помогают устранить проблему.