Sidebar

pl:manual:appendix:performance_tuning

10 Tuning wydajności

Praca w toku.

Przegląd

Żeby zmaksymalizować wydajność konieczne jest prawidłowe skonfigurowanie systemu Zabbix.

Sprzęt

Uwagi ogólne do sprzętu:

  • Używać najszybszych dostępnych procesorów
  • SCSI lub SAS są lepsze od IDE (wydajność dysków IDE można znacząco poprawić z użyciem narzędzia hdparm) i SATA
  • 15K RPM jest lepsze niż 10K RPM, które jest lepsze od 7200 RPM
  • Używać szybkich macierzy RAID
  • Używać szybkich adapterów Ethernet
  • Posiadanie większej ilości pamięci zawsze jest lepsze

System operacyjny

  • Używać ostatniej (stabilnej!) wersji systemu operacyjnego
  • Wyrzucić niepotrzebne funkcjonalności z jądra
  • Tuningować parametry jądra

Parametry konfiguracji Zabbix

Wiele z parametrów można tuningować, żeby uzyskać optymalną wydajność.

zabbix_server

StartPollers

Zasada ogólna - wartość tego parametru powinna być najmniejsza jak tylko to możliwe. Każda dodatkowa instancja zabbix_server zwiększa wydajność zabierając zasoby, jednocześnie zwiększa się zrównoleglenie. Optymalna liczba instancji jest wtedy, gdy kolejki, średnio, zawierają najmniejszą liczbę parametrów (idealnie, 0 w dowolnym momencie). Wartość ta może być monitorowana przy pomocy testu wewnętrznego zabbix[queue].

Zobacz rozdział "Zobacz też" na końcu tej strony, żeby dowiedzieć się jak skonfigurować optymalną ilość procesów zabbix.

DebugLevel

Optymalną wartością jest 3.

DBSocket

Tylko MySQL. Rekomendujemy używanie DBSocket do łączenia się do bazy danych. Jest to najszybsza i najbezpieczniejsza metoda.

Silnik bazy danych

Jest to najprawdopodobniej najważniejsza część tuningu Zabbix. Zabbix silnie zależy od dostępności i wydajności silnika bazy danych.

  • używać najszybszych silników baz danych, np. MySQL
  • używać stabilnych wydań silników baz danych
  • budować MySQL lub PostgreSQL ze źródeł, żeby uzyskać maksymalną wydajność
  • wykonywać tuning wydajności zgodnie z instrukcjami z dokumentacji MySQL lub PostgreSQL
  • dla MySQL, używać struktury tabel InnoDB
  • ZABBIX pracuje około 1.5 raza szybciej (w porównaniu do MyISAM), gdy używa się InnoDB. Dzieje się tak dzięki zwiększeniu równoległości. Jednakże, InnoDB wymaga większej mocy procesora.
  • zalecamy wykonanie tuningu serwera bazy danych do zwiększenia jej wydajności.
  • trzymać tabele bazy danych na różnych dyskach twardych
  • najczęściej używanymi tabelami są 'history', 'history_str, 'items' 'functions', triggers' i 'trends'.
  • dla dużych instalacji, rekomendujemy trzymanie plików tymczasowych MySQL w tmpfs

Rady ogólne

  • monitorować tylko wymagane parametry
  • tuningować 'Interwał aktualizacji' dla każdej pozycji. Utrzymywanie małego interwału aktualizacji może być dobre dla wykresów, jednakże może zabić Zabbix
  • tuningować parametry w szablonach domyślnych
  • tuningować parametry porządkowania
  • nie monitorować parametrów, które zwracają te same wartości.
  • unikać używania wyzwalaczy z długimi okresami jako argumenty funkcji. Na przykład, max(3600) będzie obliczane znacząco wolniej niż max(60).

Oglądanie wydajności procesów Zabbix przy pomocy "ps" i "top"

Zabbix 2.2 zapoczątkował nową funkcjonalność - procesy zmieniają swoją linię poleceń, wyświetlając aktualną aktywność i znaczące statystyki, np.:

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]

Proces główny stanowi wyjątek. Zamiast bieżącej aktywności wyświetlana jest oryginalna linia poleceń. Pomaga to w odróżnieniu procesu na systemach z wieloma instancjami Zabbix.

Ta funkcjonalność nie jest dostępna na Microsoft Windows.

Jeżeli poziom logowania jest ustawiony na DebugLevel=4 aktywności te oraz komunikaty statystyczne zapisywane są również do pliku logu.

Linux

Na systemach Linux, do obserwowania jak działa Zabbix można wykorzystać polecenie ps w połączeniu z poleceniem watch. Na przykład, żeby zobaczyć aktywność procesu, można uruchomić polecenie ps 5 razy na sekundę:

watch -n 0.2 ps -fu zabbix

Żeby zobaczyć tylko procesy proxy i agenta Zabbix:

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

Żeby zobaczyć historię procesów synchronizacji:

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

Polecenie ps daje na wyjściu długi tekst (około 190 znaków), jako że niektóre komunikaty aktywności są długie. Jeżeli terminal obsługuje mniej niż 190 kolumn tekstu można spróbować

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

żeby wyświetlić tylko linie komend bez UID, PID, czasu startu itp.

Do obserwacji wydajności Zabbix można używać również polecenia top. Naciśnięcie klawisza 'c' w top pokazuje procesy z ich liniami komend. W naszych testach na Linuxie top i atop prawidłowo wyświetlały zmieniające się aktywności procesów Zabbix, ale htop nie wyświetlał zmian aktywności.

BSD systems

Jeżeli nie zainstalowano polecenia watch, podobny efekt można uzyskać przy pomocy

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

Jeżeli polecenie watch nie jest dostępne, można spróbować

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

Domyślnie polecenie ps nie wyświetla zmian aktywności. Jedną z opcji jest użycie /usr/ucb/ps. Jeżeli nie zainstalowano polecenia watch, okresową aktualizację listy procesów można wyświetlić przy pomocy

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

Na Solaris 11:

  • /usr/ucb/ps domyślnie nie jest zainstalowany. Może byćkonieczne zainstalowanie pakietu ucb, np. pkg install compatibility/ucb,
  • jeżeli demon Zabbix zostanie uruchomiony przez użytkownika uprzywilejowanego, jego aktywność nie będzie widoczna dla użytkowników nieuprzywilejowanych.
  • polecenie sleep dopuszcza nie tylko całe sekundy ale również ułamki sekund (np. sleep 0.2).

Zobacz też