- #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).