systemd-coredump: Resource limits reached, discarding core dump
Linux / DevOps
Ошибка systemd-coredump: Resource limits reached — Решение проблемы
Служба systemd-coredump прекращает сохранение аварийных дампов процессов (core dumps), регистрируя в journalctl событие: systemd-coredump: Resource limits reached, discarding core dump.
| Симптом / Метрика | Значение по умолчанию | Влияние на систему |
|---|---|---|
| Дисковое пространство дампов | Ограничено MaxUse=10% | Новые дампы отбрасываются, анализ сбоев невозможен |
| Одновременные дампы | Лимит ProcessSizeMax / ExternalSizeMax | Превышение размера приводит к усечению или удалению |
| Статус сервиса | systemd-coredump.socket active | Служба работает, но отбрасывает артефакты |
- Потеря критически важных crash-дампов для пост-мортем анализа в GDB.
- Заполнение
/var/lib/systemd/coredump/старыми тяжелыми образами памяти.
- Проверьте текущее использование хранилища дампов через
coredumpctl:coredumpctl list coredumpctl info - Отредактируйте конфигурацию
/etc/systemd/coredump.confдля увеличения дисковых лимитов:sudo nano /etc/systemd/coredump.conf [Coredump] Storage=external Compress=yes ProcessSizeMax=4G ExternalSizeMax=8G MaxUse=20G KeepFree=5G - Примените изменения и очистите устаревшие аварийные дампы:
sudo systemctl daemon-reload sudo coredumpctl vacuum --keep-free=5G
Рекомендация DevOps: Если на сервере часто падают ресурсоемкие Java/NodeJS приложения, настройте фильтрацию или перенаправляйте дампы на отдельный NVMe-том во избежание деградации корневого раздела
/var.
Практический опыт инженера:
Частое срабатывание этого лимита — явный индикатор crash-loop в одном из системных демонов. Обязательно проверьте `systemctl --failed` и сопоставьте PID падающего процесса.
Частые вопросы (FAQ)
Где физически хранятся дампы памяти systemd-coredump?
По умолчанию сжатые файлы дампов сохраняются в каталоге /var/lib/systemd/coredump/ с расширением .zst или .lz4.
Как полностью отключить генерацию core dump?
Установите Storage=none в /etc/systemd/coredump.conf и выполните systemctl daemon-reload.