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

Существует несколько файлов tmpfs с общим объемом памяти, превышающим общий объем памяти

У меня есть 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.