Сервер с установленным Zabbix 1.0 (RedHat Linux 8.0, ядро 2.4.18-14, MySQL / MyISAM 3.23.54a-4, Pentium IV 1.5 ГГц, 256 Мб, IDE) может собирать более 200 параметров в секунду с наблюдаемых серверов (при условии отсутствия задержек в сети).
Вы можете спросить, сколько серверов можно контролировать с помощью Zabbix на моем оборудовании? Ответ зависит от количества контролируемых параметров и как часто Zabbix будет должен опрашивать эти параметры. Предположим, каждый сервер наблюдает десять параметров. Вы хотите обновлять эти параметры один раз в 30 секунд. Сделав простые расчеты, мы видим, что Zabbix способен обрабатывать 600 серверов (или 6000 проверок). В случае, если эти параметры должны быть обновлены один раз в минуту, аппаратная конфигурация сможет обрабатывать 600×2 = 1200 серверов. Эти расчеты сделаны в предположении, что все наблюдаемые значения получаются сразу как только будут запрошены (задержка 0). Если это не является обязательным требованием, то количество наблюдаемых серверов может быть увеличено вплоть до 5x-10x раз.
Очень важно, чтобы система Zabbix была оптимально настроена для получения максимальной производительности.
Общие советы по оборудованию:
Много параметров могут быть оптимизированы для получения оптимальной производительности.
StartPollers
Общее правило - удерживать значение этого параметра как можно более низким. Каждый дополнительный процесс zabbix_server добавляет определенные накладные расходы, в то же время, увеличивает параллелизм. Оптимальное количество процессов достигается тогда, когда очередь в среднем содержит минимальное количество параметров (в идеале, 0 в любой данный момент). Это значение может контролироваться с помощью внутренней метрики zabbix[queue].
DebugLevel
Оптимальное значение 3.
DBSocket
Только для MySQL. Рекомендуется использовать DBSocket для подключений к базе данных. Это самый быстрый и самый безопасный способ.
Это, вероятно, самая важная часть оптимизации Zabbix. Zabbix во многом зависит от доступности и производительности базы данных.
Пример: зачем использовать system.cpu.util[,user,avg1] и system.cpu.util[,user,avg5], если system.cpu.util[,user,avg1] уже содержит получаемые данные, причем более детальные.