Jak jste si možná všimli, jeden z nejčtenějších technických serverů na českém Internetu, Mobil server, minulé pondělí (24.5.) víc nefungoval než fungoval. Na vině tentokrát nebylo připojení, ba ani železo, nýbrž software. Z blízkosti několika metrů to pozoroval Petr Tesařík, ze vzdálenosti poněkud větší naši šťourové.
Pro některé lidi je to sice určité zklamání, ale ani tentokrát se nepodařilo Dianu (diana.mobil.cz, vulgo www.mobil.cz) hacknout… Systém se jenom poněkud zadýchal, čili, jak to pregnantně vyjádřil Patrick Zandl v úterním editorialu, po většinu dne se pohyboval rychlostí postřeleného šneka nebo vůbec, a nakonec technici museli zafirewallovat port 80 (a 90, což asi Patrick neví), aby se poněkud přemnožení Apačové už dále nemnožili.
I když ještě před tím zafirewallováním, někdy kolem 19:30, se Diana nakonec složila – pravděpodoně vlivem neúměrného zatížení systému – a bylo nutné ji natvrdo restartovat a posléze resuscitovat. Po tu dobu byla pochopitelně odpojena od sítě, jak si mj. všimli i naši pohotoví šťourové. První je od Tomáše Vokouna z 20:43.
1 221 ms 164 ms 164 ms dyn-gw.regionet.cz [194.228.8.65] 2 167 ms 159 ms 149 ms charlie.regionet.cz [194.228.8.62] 3 207 ms 197 ms 192 ms 194.228.0.17 4 310 ms 383 ms 251 ms nix-core-1.tel.cz [194.228.254.222] 5 294 ms 374 ms 373 ms nix.gts.cz [194.50.100.40] 6 237 ms 298 ms 354 ms gw1-nix-2.gts.cz [194.213.32.17] 7 250 ms 195 ms 236 ms gw2-bb.gts.cz [195.39.3.34] 8 * * * Request timed out.
Druhý, téměř o hodinu mladší, od Michala Švigy je velmi podobný.
1 131 ms 130 ms 120 ms 194.228.176.4 2 120 ms 120 ms 131 ms 194.228.176.30 3 120 ms 130 ms 120 ms 194.228.255.253 4 140 ms 381 ms 120 ms nix-core-2.tel.cz [194.228.254.226] 5 211 ms * 150 ms nix.gts.cz [194.50.100.40] 6 350 ms 181 ms 150 ms gw1-nix-1.gts.cz [194.213.33.97] 7 151 ms 160 ms * gw2-bb.gts.cz [195.39.3.34] 8 * * * Request timed out.
Z toho je také vidět, že připojení GTS bylo po celou dobu v pořádku. Ještě by se slušelo dodat, že ani Diana tou dobou nebyla opuštěna, nýbrž obklopena silným technickým zázemím (Fuf, Peťa Mitošinka a moje maličkost), který se ji snažil opět přivést k životu. ;)
Co se tedy stalo, že se jinak nadupaný stroj, kterým Diana se svými dvěma Pentii a spoustou paměti bezesporu je, dostal za hranice svých možností? Na počátku stál reklamní systém, postavený na MySQL a otázka výkonu, přesněji minimalizace tzv. system overhead. K MySQL serveru se klienti mohou připojovat dvěma způsoby – buď přes TCP/IP a nebo přes Unix-domain socket. Druhý způsob vyžaduje menší režii systému – pakety nemusí procházet přes TCP stack, není třeba je routovat, atd., nicméně z důvodů zatím neznámých nefungoval optimálně. Bylo proto nutné přistoupit k menšímu upgradu a to konkrétně v pátek před zmiňovaným pondělkem.
Leč, jak známo, ne každý upgrade znamená v důsledku zlepšení a ani nová verze nefungovala zrovna ideálně. S různými verzemi se poté experimentovalo v pátek i přes víkend, a v pondělí se konečně podařilo přeložit verzi, která vytvářela thready i Unixové sockety a navíc byla aktuální. Měla jedinou drobnou vadu. Při zátěži, jaké byl MySQL server podroben při pondělním provozu, se ukázala být značně nestabilní. Rekordem bylo 5 minut provozu a to věru není mnoho… :(
Michal Víteček (vulgo Fuf, jinak správce Diany a ten chudák, který musel kompilovat, instalovat a zkoušet všelijaké verze MySQL až do úplného vyčerpání) na tohle téma poznamenal k právě probíhající diskusi o SQL serveru v konferenci linux@linux.cz, že „MySQL vypadá, že je v pohodě, ale má spoustu problémů – hodně zmateně se chová při velkém loadu; má tendenci místo threadů, kterým vypršel wait_timeout, odstřelit sebe sama atd.“
Poučný je i závěr příběhu. Diana si nakonec nejnovější verzi, MySQL vnutit nenechala a k poklidnému běhu se vrátila až poté, kdy databáze byla kompletně reindexována a na místo nového úžasného MySQL serveru dosazena původní verze z doby „předčtvrteční“, která je sice zkompilovaná bez Linuxthreads a nevytváří Unix socket, zato nepadá. Rýpat se v něčem, co v principu docela funguje, se zkrátka nevyplácí…
Starší, související články: