Назад | Перейти на главную страницу

как найти утечку памяти в Linux?

У меня есть цифровая капля океана. недавно я объединил его с другим, и теперь система будет случайным образом (каждые пару дней) полностью загружать ЦП (для одного пользователя, а не для системы) и выдает кучу ошибок «нехватки памяти». Я не могу использовать top, чтобы выяснить, какой процесс вызывает проблему, потому что это происходит случайным образом.

Чтобы попытаться решить эту проблему, я недавно в четыре раза увеличил доступную память и мощность процессора. проблема исчезла примерно на месяц и теперь повторяется снова, чаще, чем раньше.

Я не знаю, когда он нанесет удар. и когда это происходит, он блокирует всю систему, и мне приходится выполнять полную перезагрузку. Я проверил / var / log / messages и вижу кучу ошибок "нехватки памяти" от php, mysqld, spamd и некоторых других вещей. как мне выяснить, какой пользователь вызывает проблему, и, более конкретно, как мне выяснить, как ее решить?

для контекста, это обычная система веб-хостинга с установленной cpanel.

Прочтите сообщения OOM. Он распечатает сведения об использовании памяти в то время и PID, который был убит. Эта задача не обязательно является основной причиной, в то время она просто казалась ядру большой.

Посмотрите / proc / meminfo и посмотрите процессы с помощью top. Вы должны приблизительно знать, на какой объем памяти рассчитана система. Скажем, для экземпляра 4 ГБ необходимо 2 ГБ для общей памяти БД, 1 ГБ для процессов веб-сервера и 1 ГБ для ОС и инструментов администрирования. Любая из этих категорий, превышающая их оценку, вызовет давление на память.

Точно измеряйте использование памяти для каждой службы с помощью учета контрольных групп. Это делают контейнеры, хотя вы не сказали, что используете контейнеры.

Срезы systemd также используют контрольные группы, если это ваш диспетчер служб. Устанавливать DefaultMemoryAccounting = да и просмотрите вывод systemd-cgtop. Попробуйте мониторинг cgroup с течением времени с помощью таких инструментов, как плагин netdata cgroups. Установите ограничения ресурсов для устройства, как только вы узнаете, какими они должны быть.