[comment]: # ({883da7bf-3d16c8c5})
# 10 Tuning de performance

::: noteimportant
Este manual é um trabalho em
progresso.
:::

[comment]: # ({/883da7bf-3d16c8c5})

[comment]: # ({1df41559-d1d41ad1})
#### Visão geral

É muito importante que o Zabbix esteja ajustado apropriadamente para a
sua melhor performance.

[comment]: # ({/1df41559-d1d41ad1})

[comment]: # ({22d45968-3843c1cd})
#### 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

[comment]: # ({/22d45968-3843c1cd})

[comment]: # ({7ea14a8f-44076c19})
#### 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

[comment]: # ({/7ea14a8f-44076c19})

[comment]: # ({8fdecf43-02deffa0})
#### Parâmetros de configuração do Zabbix

Vários parâmetros de configuração do Zabbix podem ser otimizados para
melhorar a performance.

[comment]: # ({/8fdecf43-02deffa0})

[comment]: # ({72921265-dc464a6b})
##### zabbix\_server

**StartPollers**

Regra geral - mantenha este parâmetro no menor valor possível, cada
instância adicional do Zabbix 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 `zabbix[queue]`.

::: noteclassic
Consulte a seção ["Veja também"](#see_also) ao final desta
página para maiores informações sobre como otimizar a quantidade de
processos do Zabbix.
:::

**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.

[comment]: # ({/72921265-dc464a6b})

[comment]: # ({de1aa037-f1c8bafb})
#### Tecnologia de banco de dados

Esta é, provavelmente, a This is probably the most important part of
Zabbix tuning. Zabbix 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 Zabbix 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

[comment]: # ({/de1aa037-f1c8bafb})

[comment]: # ({a80c1028-31d2a3b5})
#### 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 Zabbix
-   otimize os parâmetros, não os deixe com seus valores padrões
    (inclusive os templates fornecidos pela Zabbix)
-   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)`.

[comment]: # ({/a80c1028-31d2a3b5})

[comment]: # ({7d86a0a9-9a247c44})
#### Acompanhe a performance dos processos do Zabbix com o "ps" e o "top"

O Zabbix 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.

[comment]: # ({/7d86a0a9-9a247c44})

[comment]: # ({fc5e966b-7d755ddb})
##### Linux

Em ambientes Linux o comando `ps` pode ser utilizado em conjunto com o
ocmando `watch` para observar como o Zabbix 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 Zabbix 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
Zabbix. 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 Zabbix mas o `htop` não mostrou
as atividades.

[comment]: # ({/fc5e966b-7d755ddb})

[comment]: # ({6117398e-8f2fc104})
##### 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

[comment]: # ({/6117398e-8f2fc104})

[comment]: # ({ba047819-38e85ded})
##### 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

[comment]: # ({/ba047819-38e85ded})

[comment]: # ({016477a5-237c8840})
##### 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`).

[comment]: # ({/016477a5-237c8840})

[comment]: # ({ea1c66aa-3dd8f945})
### Veja também

1.  [How to configure optimal count of zabbix
    processes](http://blog.zabbix.com/monitoring-how-busy-zabbix-processes-are/457)

[comment]: # ({/ea1c66aa-3dd8f945})

[comment]: # ({fde6af90-fde6af90})
### See also

1.  [How to configure optimal count of zabbix
    processes](http://blog.zabbix.com/monitoring-how-busy-zabbix-processes-are/457)

[comment]: # ({/fde6af90-fde6af90})
