Áú»¢¶Ä²©

10 Tuning de performance

Este manual ¨¦ um trabalho em progresso.

Vis?o geral

? muito importante que o Áú»¢¶Ä²© esteja ajustado apropriadamente para a sua melhor performance.

Hardware

Defini??es gerais de hardware:

  • Utilize o processador mais r¨¢pido que tiver dispon¨ªvel
  • SCSI ou SAS ¨¦ melhor que IDE (a performance de discos IDE podem ser melhoradas significativamente pelo utilit¨¢rio hdparm) e SATA
  • 15K RPM ¨¦ melhor que 10K RPM que ¨¦ melhor que 7200 RPM...
  • Utilize armazenamento de RAID r¨¢pido
  • Utilize adaptadores fast Ethernet
  • Quanto mais mem¨®ria, melhor

Sistema operacional

  • Utilize a ¨²ltima vers?o est¨¢vel do SO
  • N?o instale / remova funcionalidades n?o necess¨¢rias do kernel
  • Otimize os par?metros do kernel

Par?metros de configura??o do Áú»¢¶Ä²©

V¨¢rios par?metros de configura??o do Áú»¢¶Ä²© podem ser otimizados para melhorar a performance.

zabbix_server

StartPollers

Regra geral - mantenha este par?metro no menor valor poss¨ªvel, cada inst?ncia adicional do Áú»¢¶Ä²© Server adiciona seu pr¨®prio 'overhead', ao mesmo tempo, o paralelismo ¨¦ aumentado. O melhor n¨²mero de inst?ncias ¨¦ obtido quando a fila, na m¨¦dia, cont¨ºm o m¨ªnimo de par?metros (idealmente 0 em algum momento). Este valor pode ser monitorado pelas verifica??es internas do Áú»¢¶Ä²© zabbix[queue].

Consulte a se??o "Veja tamb¨¦m" ao final desta p¨¢gina para maiores informa??es sobre como otimizar a quantidade de processos do Áú»¢¶Ä²©.

DebugLevel

O melhor valor ¨¦ 3.

DBSocket

Apenas para MySQL. ? recomendado utilizar DBSocket para se conectar ao banco, ¨¦ a forma mais r¨¢pida e mais segura.

Tecnologia de banco de dados

Esta ¨¦, provavelmente, a This is probably the most important part of Áú»¢¶Ä²© tuning. Áú»¢¶Ä²© heavily depends on the availability and performance of database engine.

  • use a tecnologia mais r¨¢pida, ex. MySQL
  • use vers?es est¨¢veis
  • recompile a partir dos c¨®digos fonte o MySQL ou PostgreSQL para obter a m¨¢xima performance
  • use a documenta??o de tuning do MySQL ou PostgreSQL
  • para MySQL, utilize a estrutura de tabelas
  • o Áú»¢¶Ä²© funciona pelo menos 1.5 vezes mais r¨¢pido com InnoDB (quando comparado com MyISAM). Isso ocorre por conta do aumento de paralelelismo. Por outro lado, InnoDB precisa de mais CPU.
  • otimize o banco de dados periodicamente para sua melhor performance.
  • mantenha as tabelas de bancos de dados em discos diferentes
  • As tabelas 'history', 'history_str, 'items' 'functions', triggers', e 'trends' s?o as mais pesadas.
  • Para grandes ambientes, mantenha os arquivos tempor¨¢rios do MySQL em armazenamento tmpfs

Avisos gerais

  • Monitore os par?metros necess¨¢rios somente
  • otimize o 'Intervalo entre verifica??es' de todos os itens. Quanto menor o intervalo, menor para os gr¨¢ficos e pior para a performance do Áú»¢¶Ä²©
  • otimize os par?metros, n?o os deixe com seus valores padr?es (inclusive os templates fornecidos pela Áú»¢¶Ä²©)
  • otimize os par?metros de limpeza de dados
  • n?o monitorem par?metros que retornam a mesma informa??o (ex. memora livre, memoria usada, mem¨®ria total... somente 2 destes s?o necess¨¢rios).
  • evite triggers com express?es envolvendo grandes per¨ªodos de tempo. Por exemplo, max(3600) ser¨¢ calculada de forma significativamente mais lenta que max(60).

Acompanhe a performance dos processos do Áú»¢¶Ä²© com o "ps" e o "top"

O Áú»¢¶Ä²© 2.2 introduziu uma nova caracter¨ªstica, os processos mudam suas linhas de comando para exibir a atividade atual:

UID        PID  PPID  C STIME TTY      TIME CMD
       zabbix22  4584     1  0 14:55 ?    00:00:00 zabbix_server -c /home/zabbix22/zabbix_server.conf
       zabbix22  4587  4584  0 14:55 ?    00:00:00 zabbix_server: configuration syncer [synced configuration in 0.041169 sec, idle 60 sec]
       zabbix22  4588  4584  0 14:55 ?    00:00:00 zabbix_server: db watchdog [synced alerts config in 0.018748 sec, idle 60 sec]
       zabbix22  4608  4584  0 14:55 ?    00:00:00 zabbix_server: timer #1 [processed 3 triggers, 0 events in 0.007867 sec, 0 maint.periods in 0.005677 sec, idle 30 sec]
       zabbix22  4609  4584  0 14:55 ?    00:00:00 zabbix_server: timer #2 [processed 2 triggers, 0 events in 0.004209 sec, idle 30 sec]
       zabbix22  4637  4584  0 14:55 ?    00:00:01 zabbix_server: history syncer #4 [synced 35 items in 0.166198 sec, idle 5 sec]
       zabbix22  4657  4584  0 14:55 ?    00:00:00 zabbix_server: vmware collector #1 [updated 0, removed 0 VMware services in 0.000004 sec, idle 5 sec]
       zabbix22  4670     1  0 14:55 ?    00:00:00 zabbix_proxy -c /home/zabbix22/zabbix_proxy.conf
       zabbix22  4673  4670  0 14:55 ?    00:00:00 zabbix_proxy: configuration syncer [synced config 15251 bytes in 0.111861 sec, idle 60 sec]
       zabbix22  4674  4670  0 14:55 ?    00:00:00 zabbix_proxy: heartbeat sender [sending heartbeat message success in 0.013643 sec, idle 30 sec]
       zabbix22  4688  4670  0 14:55 ?    00:00:00 zabbix_proxy: icmp pinger #1 [got 1 values in 1.811128 sec, idle 5 sec]
       zabbix22  4690  4670  0 14:55 ?    00:00:00 zabbix_proxy: housekeeper [deleted 9870 records in 0.233491 sec, idle 3599 sec]
       zabbix22  4701  4670  0 14:55 ?    00:00:08 zabbix_proxy: http poller #2 [got 1 values in 0.024105 sec, idle 1 sec]
       zabbix22  4707  4670  0 14:55 ?    00:00:00 zabbix_proxy: history syncer #4 [synced 22 items in 0.008565 sec, idle 5 sec]
       zabbix22  4738     1  0 14:55 ?    00:00:00 zabbix_agentd -c /home/zabbix22/zabbix_agentd.conf
       zabbix22  4739  4738  0 14:55 ?    00:00:00 zabbix_agentd: collector [idle 1 sec]
       zabbix22  4740  4738  0 14:55 ?    00:00:00 zabbix_agentd: listener #1 [waiting for connection]
       zabbix22  4741  4738  0 14:55 ?    00:00:00 zabbix_agentd: listener #2 [processing request]

O processo principal ¨¦ uma exce??o. A sua atividade atual n?o ¨¦ apresentada para facilitar sua identifica??o entre as m¨²ltiplas inst?ncias.

Esta funcionalidade n?o ¨¦ implementada no Windows.

Se o n¨ªvel de log for definido apra DebugLevel=4 estas atividades e mensagens de estat¨ªsticas ser?o gravadas no log.

Linux

Em ambientes Linux o comando ps pode ser utilizado em conjunto com o ocmando watch para observar como o Áú»¢¶Ä²© est¨¢ indo. Por exemplo, para rodar o comando ps 5 vezes por segundo para ver as atividades dos processos:

watch -n 0.2 ps -fu zabbix

Para mostrar apenas os processos do Áú»¢¶Ä²© Proxy/Agent:

watch -tn 0.2 'ps -f -C zabbix_proxy -C zabbix_agentd'

Para mostrar apenas o processo de sincronismo do hist¨®rico:

watch -tn 0.2 'ps -fC zabbix_server | grep history'

O comando ps produz uma sa¨ªda longa (aproximadamente 190 colunas), algumas mensagens de ativiades ser?o longas. Se o seu terminal for menor que 190 colunas de texto voc¨º pode tentar

watch -tn 0.2 'ps -o cmd -C zabbix_server -C zabbix_proxy -C zabbix_agentd'

para exibir apenas as linhas de comando sem UID, PID, start time etc.

O comando top tamb¨¦m pode ser utilizado para observar a performance do Áú»¢¶Ä²©. Pressionando a tecla 'c' no top exibe os processos com seus comandos. Em nossos testes o top e atop apresentam corretamente as mudan?as de atividades nos processos do Áú»¢¶Ä²© mas o htop n?o mostrou as atividades.

BSD

Se o comando watch n?o estive instalado pode-se conseguir efeito similar com o comando abaixo

while [ 1 ]; do ps x; sleep 0.2; clear; done
AIX, HP-UX

Se o comando watch n?o estiver dispon¨ªvel, pode-se tentar

while [ 1 ]; do ps -fu zabbix; sleep 1; clear; done
Solaris

Por padr?o o comando ps n?o mostra as mudan?as de atividades. Uma op??o ¨¦ usar o /usr/ucb/ps em seu lugar. Se o comando watch n?o estiver instalado, a periodicidade de atualiza??o da lista de processos pode ser vista com

while [ 1 ]; do /usr/ucb/ps gxww; sleep 1; clear; done

No Solaris 11, o comando sleep aceita fra??es de 1 segundo (e.g. sleep 0.2).

Veja tamb¨¦m