TGViewer
Записки IT специалиста Записки IT специалиста @interface31 · 9.03K subscribers
Post #4299 2.9K
​​Ваш Zabbix напрасно поднимает панику, у нас еще много памяти

Не столь давно, после внедрения Zabbix один из заказчиков пожаловался, что Zabbix начал присылать сообщения о том, что недостаточно оперативной памяти, но на самом деле памяти еще достаточно.

На вопрос откуда такая уверенность нам кивнули на веб-интерфейс Proxmox из которого выходило, что памяти действительно еще хватает.

Так что, Zabbix неправильно считает память или напрасно нагнетает панику? Вовсе нет, давайте разбираться.

Давайте возьмем еще один хост с Proxmox и посмотрим, судя по графику у нас в запасе еще около 10 ГБ свободной памяти, неплохо.

Но если запустим команду:

free -h

То картина существенно изменится, как оказывается свободной памяти у нас всего 2,2 ГБ, а доступной 6,3 ГБ.

При этом у нас 3,8 ГБ разделяемой памяти и 8,3 ГБ буферной/кеша.

Внимательный читатель, вооружившись калькулятором, скажет: стоп, что-то не сходятся у вас доходы с расходами.

Но в Linux есть некоторая особенность. Неактивные страницы памяти считаются занятыми, так как содержат некоторые полезные данные. В тоже время они считаются доступными, так как могут быть немедленно освобождены и переданы нуждающемуся в памяти процессу.

Т.е. если мы сложим вместе used + shared + buff/cache то полученное значение не будет соответствовать total – free.

Теперь давайте разберемся что значит каждый вид памяти:

▫️ used – использованная, память которая напрямую используется рабочими процессами в системе

▫️ free – свободная, это память которая не используется ни одним процессом и может быть выделена незамедлительно.

▫️ shared – разделяемая, используется для ускорения межпроцессного взаимодействия, что позволяет исключить передачу информации между процессами через ядро.

▫️ buff/cache – буфер ввода-вывода и кеш VFS (виртуальной файловой системы), играет очень важную роль, так как позволяет разместить в памяти наиболее часто запрашиваемые данные, системные библиотеки и т.п.

▫️ available – доступная, память которая может быть выделена процессу без обращения к пространствам подкачки.

И именно доступная (available) память наиболее точно отображает положение дел с наличием памяти в системе, и именно она используется в триггерах Zabbix.

Proxmox же просто показывает нам used, а остальное помечает свободным. Исходя из этого у нас имеется 10 ГБ «свободной» памяти, на самом деле нам доступно только 6 ГБ, где остальное?

А дело в том, что кеш тоже имеет важное значение для производительности системы и его сброс может привести к обратному эффекту – начнется интенсивное обращение к диску и общая производительность системы резко упадет.

Поэтому разные участки кеша и буферов тоже имеют собственный вес и этот вес может давать им преимущество над запущенными процессами.

В некоторых случаях система может решить, что освобождать кеш дорого и дешевле будет отправить некоторые страницы памяти в подкачку или вовсе позвать OOM Killer и пристрелить какой-нибудь жирный процесс. 🔫🔫🔫

Собственно, это мы и видим в данном случае - 4.7 ГБ памяти содержит «дорогой» кеш и не сможет быть быстро освобождена. Точнее, система будет держаться за этот кеш до последнего, потому что после его очистки плохо станет всем, а пристрелят или отправят в своп только некоторых.

Поэтому в данном случае Zabbix прав, с чем наши заказчики скоро столкнулись, когда OOM Killer начал выключать одну из малоактивных виртуалок.

Поэтому при любых непонятках с памятью ориентируйтесь не на графики и показания различных консолей, а проанализируйте ее использование при помощи команды free.
  • 👍 64
  • ❤ 1
More from @interface31
  1. Oct 16, 2026Авторское право – не пустой звук Сегодня с одним нашим коллегой и молодым автором произоше…
  2. Oct 16, 2026Post #6891
  3. Oct 16, 2026Selectel обновил пользовательское соглашение. А что там? Правильно: 6.4. Исполнитель не не…
  4. Oct 16, 2026Post #6889
  5. Oct 15, 2026И еще немного про алиасы в PowerShell PowerShell предлагает большой набор встроенных алиас…
  6. Oct 15, 2026Post #6883
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →