У меня есть сервер, на котором работает пакет Liquidsoap + icecast и простой веб-сайт (httpd + mysqld). Ничего особенного. Посетителей около 2000+ в день, в среднем около 50 одновременно находятся в сети.
На сервере 8 ГБ оперативной памяти. С течением времени объем свободной памяти постоянно уменьшается, хотя на сервере не запускается ничего нового и нет новых пользователей. В какой-то момент он начинает менять местами, нагрузка на сервер возрастает, и он перестает отвечать. Обычно я просто перезапускаю сервер ...
Что можно сделать, чтобы определить, что именно вызывает утечку памяти? Я использую top для отслеживания использования ресурсов, но, насколько я понимаю, ничего полезного не показывает:
Есть ли способ узнать, что использует столько памяти? или что начинает сильно свапиться на диск? Есть ли способ освободить память без перезагрузки сервера?
Бег top
в пакетном режиме для периодического отчета об объеме памяти можно использовать, чтобы увидеть, кто использует память, когда дела идут плохо. Бег sar
в пакетном режиме должен давать хорошую диагностику использования памяти и связанных операций ввода-вывода. Бег munin
чтобы контролировать систему, вы должны получить график с хорошей детализацией того, для чего используется память. Это может очень помочь.
Вы можете использовать limits.conf для ограничения максимального размера ядра программ. При правильной настройке это должно убить все программы, у которых происходит утечка памяти. Это работает с модулем pam_limits. Пределы также можно установить с помощью ulimits
команда.
Вы запускаете несколько программ, которые могут использовать большой объем памяти. Некоторые вещи, на которые вы можете посмотреть, включают.
apache2
может утечка памяти. Когда это произойдет, вы должны увидеть увеличение объема памяти. Вы можете настроить apache2 для повторного использования детей после определенного количества использований, установив MaxRequestsPerChild
до 100 или около того. Если это решит проблему, вам необходимо устранить утечку. Я бы сначала посмотрел это.tmpfs
файловая система смонтирована, то может произойти утечка памяти, если файлы не будут удалены при использовании. Большие долгоживущие файлы также могут быть проблемой. Нормальное использование памяти: Свободная память - это не то, чего вам нужно много. Если ваша система работает долгое время и имеет много свободной памяти, что-то не так. Каждый раз, когда вы читаете или записываете файл, блоки попадают в буферный кеш. Это уменьшит вашу свободную память, и это хорошо. В системе будет достаточно свободного места для запуска нескольких программ, не ища памяти в другом месте. Поскольку многие программы работают быстро, их память будет возвращена в свободный пул, когда они прекратят работу.
Когда вы читаете файл, который находится в буферном кеше, доступ к диску не требуется, и чтение разрешается из буферного кеша. Пишет аналогичный механизм. Если вашей системе нужна память, буферный кеш используется в первую очередь. Большинство буферов можно освободить немедленно.
Если у вас есть утечка памяти, вы увидите, что свободная память и буферы начнут сокращаться. Это все еще не является серьезной проблемой, поскольку утечка памяти в конечном итоге должна быть перемещена в пространство подкачки. Ваша система будет по-прежнему работать нормально, пока вы не заполните пространство подкачки и не опустошите оставшееся свободное пространство до точки, когда программы не могут быть запущены. Обычно может использоваться небольшой объем подкачки.
Вы можете использовать эту команду, чтобы увидеть 10 самых популярных приложений по использованию ОЗУ:
ps -A --sort -rss -o comm,pmem | head -n 11
Иногда эта команда помогает вам, если было создано много подпроцессов:
ps auxf
Таким образом вы можете увидеть, какие процессы принадлежат друг другу.
Ничто не использует эту память с точки зрения приложений.
Вам нужно вычесть значение «кэширования», которое представляет собой кеш страницы, чтобы лучше понять, каково ваше фактическое использование памяти с точки зрения использования программы.
В основном это хорошее управление памятью, и это в идеале то, что вам нужно.
См. Ссылку здесь для получения дополнительной информации: http://www.linuxatemyram.com/
На самом деле я не профессионал, но жидкое мыло + ледяной карамель - это мультимедиа. Когда система свободна, она кэширует и / или занимает память для использования в будущем. И если трафик увеличивается в определенное время дня / в течение определенного периода времени, то он начнет свопинг. На этом этапе, если количество запросов (пользователей, просматривающих контент) увеличивается, необходимые ресурсы будут более 8 ГБ оперативной памяти.