Поиск по сайту

telegram

Интересуешься IT и системным администрированием? Подпишись на наш канал, где мы делимся инсайдами, новостями и практическими советами! Прокачай свои навыки вместе с нами!

Как увеличить системные лимиты в Zabbix 7.0

Что означает сообщение:

“…the user limit of 1024 file descriptors is insufficient. The maximum number of concurrent checks per worker has been reduced…”?**

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

Данного значения недостаточно для количества операций, которые выполняет Zabbix, в результате чего система автоматически снижает максимальное число одновременных проверок на один worker.

На практике это означает следующее:

  • Zabbix не может одновременно открыть необходимое количество файлов или сетевых соединений
  • часть проверок выполняется с задержками или ставится в очередь
  • общая эффективность и производительность обработки данных снижается

Иными словами, система упирается не в ресурсы CPU или памяти, а в ограничение операционной системы, которое напрямую влияет на способность Zabbix параллельно обрабатывать данные мониторинга.

Онлайн-курс: Zabbix 6. Мониторинг IT инфраструктуры предприятия.

Курс предлагает глубокое изучение Zabbix 6 и охватывает все ключевые аспекты: от установки и конфигурации до продвинутого мониторинга и автоматизации. Курс подходит как для начинающих, так и для опытных администраторов.

Что такое файловые дескрипторы?

Файловые дескрипторы — это числовые идентификаторы, которые операционная система использует для управления доступом процессов к различным ресурсам. Несмотря на название, файловые дескрипторы применяются не только для работы с обычными файлами, но и для сетевых соединений, сокетов, каналов межпроцессного взаимодействия, устройств и других объектов ввода-вывода.

Каждый процесс в системе имеет собственный лимит файловых дескрипторов. Этот лимит определяет максимальное количество файлов и сетевых соединений, которые процесс может открыть одновременно. Как только лимит достигается, операционная система перестаёт выдавать новые дескрипторы, даже если процессу доступны процессорное время и оперативная память.

Зачем увеличивать лимит файловых дескрипторов?

По мере увеличения количества устройств, узлов и сервисов, которые мониторит Zabbix, значительно возрастает и число одновременно используемых файловых дескрипторов. Каждый активный агент, прокси, сетевое соединение или внутренняя операция требует отдельного дескриптора.

Если для экземпляра Zabbix установлен слишком низкий лимит, система может столкнуться с нехваткой доступных дескрипторов. Это приводит к ошибкам, ограничениям производительности и вынужденному снижению количества одновременных проверок, выполняемых каждым worker-процессом. В результате увеличиваются задержки при сборе данных, падает пропускная способность мониторинга и ухудшается общая отзывчивость системы.

Шаги по увеличению лимита файловых дескрипторов

Проверка текущего лимита

Для начала необходимо определить текущий лимит файловых дескрипторов для запущенного процесса zabbix_server. Это можно сделать одной командой:


cat /proc/$(pgrep -o zabbix_server)/limits | grep "Max open files"

Данная команда выводит текущие soft и hard лимиты файловых дескрипторов для процесса zabbix_server.

Пример вывода:


Max open files   1024   524288   files

Расшифровка значений:

  • первое значениеsoft limit (мягкий лимит), фактически используемый процессом;
  • второе значениеhard limit (жёсткий лимит), максимальное значение, до которого может быть увеличен soft limit.

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

Наша задача — увеличить soft limit с 1024 как минимум до 10000. Конкретное значение следует подбирать в зависимости от масштаба вашей инфраструктуры, количества хостов, активных проверок и прокси. В реальных производственных средах это значение часто бывает значительно выше.

Важно отметить, что Zabbix самостоятельно контролирует достаточность лимита: если установленного значения окажется недостаточно, соответствующее предупреждение будет зафиксировано в журнале сервера.

Создание каталога для override-конфигурации

Создайте каталог, в котором будет храниться дополнительная конфигурация systemd для сервиса zabbix_server:


mkdir /etc/systemd/system/zabbix-server.service.d

Настройка прав доступа

Назначьте корректные права доступа для созданного каталога:


chmod 755 /etc/systemd/system/zabbix-server.service.d

Это стандартные права, обеспечивающие корректную работу systemd и доступ на чтение к конфигурации.

Создание override-конфигурации

Теперь необходимо создать файл override-конфигурации, в котором будут переопределены системные лимиты для сервиса zabbix_server. В данном примере лимит файловых дескрипторов увеличивается до 10000:


echo -e "[Service]\nLimitAS=infinity\nLimitRSS=infinity\nLimitNOFILE=10000\nLimitNPROC=1024" \
| sudo tee /etc/systemd/system/zabbix-server.service.d/override.conf

В этом файле:

  • LimitAS=infinity — снимает ограничение на виртуальное адресное пространство;
  • LimitRSS=infinity — убирает лимит на использование физической памяти;
  • LimitNOFILE=10000 — увеличивает лимит файловых дескрипторов;
  • LimitNPROC=1024 — задаёт лимит на количество процессов.

Настройка прав доступа для override-файла

Установите корректные права доступа для файла конфигурации:


chmod 644 /etc/systemd/system/zabbix-server.service.d/override.conf

Проверка содержимого override-конфигурации

Убедитесь, что файл сохранён корректно и содержит нужные параметры:


cat /etc/systemd/system/zabbix-server.service.d/override.conf

После этого override-конфигурация готова к применению. На следующем шаге потребуется перезагрузка конфигурации systemd и перезапуск сервиса Zabbix, чтобы новые лимиты вступили в силу.

Активация изменений

Чтобы применить новые настройки, необходимо перезагрузить конфигурацию systemd:


systemctl daemon-reload

Эта команда сообщает systemd о появлении или изменении override-конфигураций и подготавливает систему к их использованию.

Проверка состояния сервиса

После перезагрузки конфигурации проверьте состояние сервиса сервера Zabbix:


systemctl status zabbix-server.service

Просмотр подключённой дополнительной конфигурации

На экране состояния сервиса видно, что для zabbix-server.service используется дополнительная конфигурация, размещённая в каталоге:


/etc/systemd/system/zabbix-server.service.d/

В частности, systemd применяет файл override.conf, в котором заданы параметры переопределения. Именно этот файл содержит необходимые изменения, включая увеличение лимита файловых дескрипторов, и подтверждает, что override-конфигурация успешно подключена и будет использоваться сервисом при запуске.

Перезапуск приложения

Чтобы новые лимиты вступили в силу, необходимо перезапустить сервис сервера Zabbix:


systemctl restart zabbix-server.service

После перезапуска процесс будет запущен уже с обновлёнными системными ограничениями.

Проверка конфигурации после перезапуска сервера Zabbix

Повторно проверьте текущий лимит файловых дескрипторов для запущенного процесса zabbix_server:


cat /proc/$(pgrep -o zabbix_server)/limits | grep "Max open files"

Ожидаемый результат будет выглядеть, например, так:


Max open files   10000   10000   files

Это означает, что процесс теперь работает с новым установленным лимитом, и ограничение в 1024 файловых дескриптора больше не применяется.

Заключение

Увеличение лимита файловых дескрипторов для конкретного пользователя позволяет избежать проблем с производительностью и стабильностью работы сервера или прокси Zabbix, начиная с версии 7.0.

Следуя описанным выше шагам, можно корректно повысить лимиты файловых дескрипторов для сервиса, обеспечив тем самым возможность обрабатывать большее количество одновременных подключений и проверок. Это особенно важно для нагруженных инсталляций, где Zabbix активно работает с большим числом хостов, агентов и сетевых соединений.

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

Интересуешься IT и системным администрированием? Подпишись на SysAdminHub в телеграмм, чтобы узнавать обо всем первым — t.me/SysAdminHub

Комментарии (0)

Здесь не опубликовано еще ни одного комментария

Оставьте свой комментарий

0 Значки
Вложения (0 / 5)
Поделитесь своим местоположением