У меня есть VPS с 7,5 Гб оперативной памяти под управлением CentOS 7, и, кстати, я не делал особых оптимизаций и т. Д., Так как он довольно хорошо обслуживает сайт. Сегодня я собирался создать ramdisk для временных таблиц mysql, поэтому я подумал, что должен сначала проверить, существует ли уже какой-либо ramdisk или tmpfs, и я нашел это.
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 XXXG XXXG XXXG XX% /
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 324K 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
tmpfs 783M 0 783M 0% /run/user/0
Я средний пользователь * nix, поэтому мне кажется, что уже существует несколько файлов tmpf и их объединенные максимальные ограничения на самом деле больше, чем общая память, которая у меня есть. Так должен ли я беспокоиться о том, что существует несколько файлов tmpf, которые могут забрать всю доступную память и поставить машину на колени? Или эти tmpfs создаются самой ОС и не создают никаких проблем.
Обновление 1
@ Майкл. Похоже, я иду к неприятностям. Добавив файл 1G в /run
доступная свободная память в верхней части уменьшена на 1 ГБ, а размер буфера / кеш-памяти увеличен на 1 ГБ. Это означает, что если какой-либо пользователь / пакет / сценарий и т. Д. Сумеет записать что-то в эти tmpfs, система может выйти из строя. Любые идеи, как я могу отследить эти tmpfs и выяснить, почему / как они созданы.
Обновление 2
Бег swapon -e
возвращается
NAME TYPE SIZE USED PRIO
/dev/vda2 partition 8G 0B -1
означает, что мой лебедь на самом деле живет в самой памяти, а это означает, что если система попытается использовать SWAP, чтобы удалить что-то из памяти, материал снова закончится в памяти, только в другом месте. Так что никаких предложений, как вылечить эту ситуацию.
Относительно того, где эти tmpfs
складки происходят из:
/dev/shm
является стандартной функцией некоторых дистрибутивов Linux. Вот shm
означает «Общая память». Это виртуальный диск, который создается по умолчанию. Используется 0 ГБ, что означает, что вы его не используете. /run/user/0
соответствует шаблону, используемому systemd
системы, которые у вас есть. systemd
позволяет указать ограничения памяти для выполняемых «служебных единиц». Пытаться sudo grep -R MemoryLimit /etc/systemd
чтобы увидеть, есть ли какие-либо файлы модулей, в которых указан предел памяти. /sys/fs/cgroup
это также создано systemd.Другими словами, похоже, что у вас есть несколько стандартных RAM-дисков, которые, оказывается, занимают избыточное количество памяти, если вы пытаетесь заполнить их все сразу. Я бы не стал беспокоиться о простом существовании этих файлов, поскольку все они почти не используются на вашем «скриншоте».
Если вы хотите ограничить использование памяти определенными приложениями, systemd
позволяет легко ограничить это для каждой «услуги». Прочтите, как использовать MemoryLimit в конфигурационных файлах "служебного блока" в /etc/systemd
.