- #2 Performance tuning

It is very important to have Zabbix system properly tuned for maximum performance.

- Hardware

General advices on hardware:

  • Use fastest processor available
  • SCSI or SAS is better than IDE (performance of IDE disks may be significantly improved by using utility hdparm) and SATA
  • 15K RPM is better than 10K RPM which is better than 7200 RPM
  • User fast RAID storage
  • Use fast Ethernet adapter
  • Having more memory is always better

- Operating System

  • Use latest (stable!) version of OS
  • Exclude unnecessary functionality from kernel
  • Tune kernel parameters

- Zabbix configuration parameters

Many parameters may be tuned to get optimal performance.

- zabbix_server

StartPollers

General rule - keep value of this parameter as low as possible. Every additional instance of zabbix_server adds known overhead, in the same time, parallelism is increased. Optimal number of instances is achieved when queue, on average, contains minimum number of parameters (ideally, 0 at any given moment). This value can be monitored by using internal check zabbix[queue].

DebugLevel

Optimal value is 3.

DBSocket

MySQL only. It is recommended to use DBSocket for connection to the database. That is the fastest and the most secure way.

- Database Engine

This is probably most important part of Zabbix tuning. Zabbix heavily depends on availability and performance of database engine.

  • use fastest database engine, i.e. MySQL
  • use stable release of a database engine
  • rebuild MySQL or PostgreSQL from sources to get maximum performance
  • follow performance tuning instructions taken from MySQL or PostgreSQL documentation
  • for MySQL, use InnoDB table structure
  • ZABBIX works at least 1.5 times faster (comparing to MyISAM) if InnoDB is used. This is because of increased parallelism. However, InnoDB requires more CPU power.
  • tuning the database server for the best performance is highly recommended.
  • keep database tables on different hard disks
  • 'history', 'history_str, 'items' 'functions', triggers', and 'trends' are most heavily used tables.
  • for large installations, keeping of MySQL temporary files in tmpfs is recommended

- General advices

  • monitor required parameters only
  • tune 'Update interval' for all items. Keeping small update interval may be good for nice graphs, however, this may overload Zabbix
  • tune parameters for default templates
  • tune housekeeping parameters
  • do not monitor parameters which return same information.

Example: why use system[procload],system[procload5] andsystem[procload15] if system[procload] contains all.

  • avoid use of triggers with long period given as function argument. For example, max(3600) will be calculated significantly slower than max(60).