У меня есть приложение rails 3 с 100-200 ежедневными уникальными посетителями. Общий объем используемой памяти на сервере (Ubuntu) составляет около 1,5-2 ГБ. Я хочу знать, сколько памяти используется каждым процессом. Каковы лучшие инструменты для отслеживания памяти, используемой различными процессами?
Вы можете просто запустить top
и нажать M kbd>, чтобы отсортировать процессы по использованию памяти.
Вы можете запустить ps vax | sort -k8n
, чтобы показать процессы, отсортированные по резидентному стеку (ps v
переключается на представление, ориентированное на память).
Вы можете включить snmp и настроить mrtg для периодического опроса системы, генерируя график того, сколько памяти используется процессами, которые вас интересуют.
Вы можете смириться с тем, что Ruby, несмотря на все его преимущества, ужасно управляет памятью в длительных процессах. :)
Вы можете объединить более сложную командную строку ps (посмотрите страницу руководства и прочитать о параметре -o) и rrdtool
со сценарием оболочки для генерации статистической статистики на процессы, которые вам небезразличны.
И т.д.
Управление памятью очень сложно, но вы можете использовать top
, htop
или, как предполагает Дэннисауэр, что-то вроде ps vax | sort -k8n
. Если вы хотите получить обзор / сводку, то free -m
это хорошо.
Но процессы обычно потребляют меньше памяти, чем используют. Например, если у вас есть десять процессов, каждый из которых использует 10 МБ, это не означает, что эти процессы будут использовать 100 МБ. Причина этого в том, что Linux распознает идентичные части памяти между процессами, поэтому вам не нужно иметь много одинаковых копий. Другими словами, ваша система всегда может использовать больше памяти, чем у вас. Так что вам действительно нужно разделить потребление памяти и использование памяти.
Это не всегда легко.