У меня есть веб-сервер под управлением Apache, на котором есть интересные цифры по использованию памяти.
Глядя наверху, у меня есть следующая информация о памяти
Mem: 11679976k total, 10917568k used, 762408k free, 384320k buffers
Swap: 4194296k total, 0k used, 4194296k free, 1103728k cached
Таким образом, за вычетом буферов и кеша используется примерно 9 ГБ памяти. free -m подтверждает это.
total used free shared buffers cached
Mem: 11406 10642 763 0 375 1077
-/+ buffers/cache: 9189 2217
Swap: 4095 0 4095
Этот веб-сервер очень загружен, поэтому, когда мы отключим apache, мы ожидаем, что использование памяти резко упадет, но это совсем не сильно.
Как мне узнать, что на самом деле использует всю эту память? Начиная с вывода, после выключения apache никто не использует много памяти. Это говорит мне, что никто не использует эту память, но система сообщает, что она используется.
У нас было несколько сбоев серверов из-за нехватки памяти, поэтому мы пытаемся лучше понять, что происходит.
Проверять, выписываться /proc/meminfo
и /proc/slabinfo
. В slabtop
Команда может помочь вам понять содержимое slabinfo.
Существуют кеши, которые могут потреблять память, но не классифицируются как кеш или буферы по верхнему / свободному уровню. На ум приходят inode и dentry (особенно если у вас обширные файловые системы).