Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - Petr Nosek

Stran: [1]
1
Server / OOM-Killer zabíjí MariaDB
« kdy: 09. 12. 2022, 22:00:51 »
dobrý den, všem,

  snažím se pochopit, kde na serveru mám problém a potřeboval bych trošku popostrčit v porozumění. Situace - server s 3,6 GB RAM - vypnuté swapování. Problém: minimálně jednou týdně mi oom-killer sestřelí mariadb. Vypadá to, že mám málo RAM paměti, nicméně nerozumím tomu, proč.

  Když vyjedu výpis paměti, tak to vypadá průměrně takto:

Kód: [Vybrat]
root@bender:/var/lib# free -h
               total        used        free      shared  buff/cache   available
Mem:           3,7Gi       1,9Gi       316Mi       260Mi       1,4Gi       1,2Gi
Swap:             0B          0B          0B


Chápu, že si databáze mariadb nebo jakákoli aplikace může ukousnout v době problému více RAM. Říkal jsem si, že je tam dostatečná rezerva.

Podezíral jsem mariadb, že si vezme více paměti a proto padne. Proto jsem se jal konfigurovat její nastavení. Do přílohy dávám soubor mysqltunner.log.

V rámci toho řádku bych chápal, že si MySQL (mariadb) nemůže vzít víc, jak 580M.

Kód: [Vybrat]
-------- Performance Metrics ------------------------------
[--] Up for: 13h 26m 35s (1M q [40.268 qps], 19K conn, TX: 9G, RX: 399M)
[--] Reads / Writes: 86% / 14%
[--] Binary logging is disabled
[--] Physical Memory     : 3.7G
[--] Max MySQL memory    : 580.9M
[--] Other process memory: 0B
[--] Total buffers: 297.0M global + 17.7M per thread (16 max threads)
[--] P_S Max memory usage: 72B
[--] Galera GCache Max memory usage: 0B
[OK] Maximum reached memory usage: 527.7M (14.10% of installed RAM)
[OK] Maximum possible memory usage: 580.9M (15.52% of installed RAM)

Přesto omezení nepomohla a pády databáze kvůli nedostatku paměti přetrvávají. Jedině, že bych špatně chápal výpis a je to maximum paměti 580MB + 297MB buffer. Ale i tak, mám databázi spuštěnou a htop říká že mariadb využívá 21% paměti a systém včetně tohoto teď využívá 2 GB RAM ze 3,6GB. Takže mám pořád 1,6GB teoreticky volných.


Dále přikládám výpis ze syslogu, kde došlo 9/12 v 3:45 k sestřelení databáze. Zatím netuším, jak si to interpretovat - kolik paměti v tu chvíli Mariadb čerpala, když byla ukončena.

Ono totiž teoreticky paměť nemusí vyčerpat mariadb, ale může být jenom obětí jiných procesů, které paměť vyžerou. Co a jak byste monitorovali, aby bylo možné zjistit, který proces se tak rozežere?

Ještě přikládám graf využití paměti z Muninu. Z grafu je vidět, že 3:45 došlo k uvolnění paměti, protože spadla databáze. Někdy před osmou jsem ji znovu nastartoval. Graf před pádem ovšem podle mě nijak nevybočuje z grafů po osmé hodině - kromě tedy křivky commited, ale to už jsem nedostudoval, co je s ní myšleno.

Ještě mě napadlo, že tu může být i částečné zkreslení grafu Muninu. Protože když dojde k zaplnění RAM, tak nemusí systém reagovat. Munin node se spouští každých pět minut, aby posbíral čísla a vytvoří graf. Pokud byl systém zamrzlý a rozhodoval, který proces ukončí, nemusel Munin nasbírat data a tak mohl další zběr vycházet z předchozí stavu před vyčerpáním paměti RAM.

Ještě přikládám graf z monitoringu Cacti. Protože Cacti zapisuje data do mariadb, tak je přesně vidět, od kdy do kdy došlo k výpadku. A ani tam těsně před událostí nevidím žádný extrém, že by docházelo k vyčerpání RAM.

Už si s tím přestávám vědět rady. Budu rád za tipy a podnětnou diskusi.


Stran: [1]