Portál AbcLinuxu, 5. května 2025 13:19
Ve čtvrtek 4. 5. 2006 odpoledne měl portál abclinuxu.cz vážné problémy s dostupností. To bylo tak...
Ve dvě hodiny odpoledne mělo začít losování vítězů soutěže, která se pořádala v rámci ankety o nejoblíbenější distribuci. Sice jsme čekali, že se trošku zvýší nápor na server, ale výsledek daleko předčil naše očekávání: problém totiž vůbec nebyl ve zvýšeném zájmu návštěvníků - to jen potíže trochu podtrhlo a zvýraznilo. Místo toho se sešly hned dva jiné průšvihy najednou.
1) Ano, měli bychom se stydět, ale už se stalo, zpátky to nevrátíme, takže se můžeme veřejně přiznat: nechali jsme se nachytat na poměrně primitivní Denial of Service útok, který kdosi spustil právě s plánovaným začátkem losování. Kdyby býval server běžel na jádře řady 2.6, nic by se nestalo (až do včerejška používalo abclinuxu.cz již značně vousaté jádro 2.4). S upgradem a přesunem na nový server se otálelo tak dlouho, až se to nevyplatilo.
Ale stalo se. Samo o sobě by to však nebylo nic hrozného a máme důvod věřit, že server by tu taškařici bez větších potíží ustál.
Jenže se k tomu přidal ještě problém číslo...
2) Aplikace, která obstarává provoz stránek, je náchylná k problémům, vyskytnou-li se v komentářích (diskuze, blogy, zprávičky, atp.) binární data, ze kterých se občas vytvoří neplatné XML entity. Celý dokument pak nelze načíst, log se plní výjimkami, dějí se nepěkné věci. Protože je však - jak se zatím zdá - nemožné chybu simulovat na lokální instalaci, a vývojáři dotčené knihovny (DOM4J) tvrdí, že podobné selhání není možné, jde o zapeklitý oříšek. UPDATE: chyba již byla vyřešena.
Včera se tato chyba projevila hned na dvou místech a to tak, že bylo velmi obtížné ji odhalit - proto jsme dlouho nevěděli, v čem vězí problém. Dizkuze na hlavní stránce nešly načíst, což jste si možná všimli, pokud už se vám přeci jen podařilo aspoň kousek stránky zobrazit. Každý pokus o zobrazení nezobrazitelných diskuzí zanechal v logu velkou hromadu textu (každá diskuze zvlášť, přičemž na hlavní stránce je docela dlouhý seznam aktuálních diskuzí) a to byl ten zásadní moment, který způsobil, že se server při takovém přívalu dat nezdravě zadýchal.
Než se však podařilo objevit pravou příčinu problému, dost dlouho to trvalo. Výsledkem je však skutečnost, že Abíčko teď běží na nablýskaném novém serveru Sun Fire X2100 s Opteronem 175 dual-core 2,2GHz (který darovala společnost Sun Microsystems Czech s.r.o.; test na abclinuxu.cz). Migrace ze starého železa byla už nějakou dobu v plánu a všechno bylo v podstatě připraveno. Jen nikdo nečekal, že bude nutné ji provést s nožem na krku v deset večer ve všední den. Teď však máme nový stroj, nové jádro, novou Javu, nové boty... prostě paráda.
Doufáme, že si rychlost nového serveru, kterou lze pocítit na první poklik, budete vychutnávat stejně jako my.
P.S. Ale nějaké veřejné losování si asi příště ještě dobře rozmyslíme. Nechceme dvakrát otevřít stejnou Pandořinu skříňku.
Nemohl by Leoš (nebo někdo, kdo do toho vidí), napsat do blogu o co přesně šlo?My jsme si sice chtěli nasypat popel na hlavu, ale ne ze sebe udělat příliš velké blbce. Takže jsem původní verzi článku trošku "zobecnil" - právě proto, abyste se sice dozvěděli, o co šlo, ale ne to, kde přesně byla chyba.
Milé Ábíčko, za těch pár dlouhých hodin jsi nám dost chybělo , děkujeme, že jsi
No jo, ať blogy, tak hledání v diskusích. Píšu si sem každou blbost v pokroku s noťasem a najednou tu byla černá díra.
ty hadi uživatelský
SAXReader
u, kterým se nastaví kódování, které pak probublá až do XML parseru a ten už pak byty na vstupu interpretuje podle zvoleného kódování.
A pokud znate lepsi reseni, tak by me vazne zajimalo...
javax.servlet.ServletRequest.setCharacterEncoding(java.lang.String enc)
, kterou by mělo jít nastavit, v jakém kódování poslal data klient. Je potřeba jí ale zavolat ještě před získáváním parametrů requestu, aby se překódování stihlo uplatnit.
V tomto případě je Černý Petr spíš v rukou autorů prohlížečů, které odesílaná data naštěstí kódují ve stejném kódování, v jakém data přijaly (takže alespoň víte, co můžete očekávat), ale charset=
už do Content-Type
nepřidají. Na druhou stranu, i kdyby přidaly, on jí zase dnes asi žádný server nezpracuje Hey and away we go Through the grass, cross the snow Big brown beastie, big brown face I´d rather be with you than flying through space.
Když vidim ten rozdíl, tak mne napadlo - na čem běželo ještě předevčírem AbcL? Že je to tak poznat?
No, moudrej z toho nejsem, to ještě nic nevypovídá, ani porovnání s tim SUNem si z hlavy neudělam . Ale děkuju
P.S. jestli na tom stroji jelo všechno, databáze, webserver, tak ale zase vidim, že se o to může pokoušet dost lidí, o svuj píseček.
1.6 GHzPřesně jak jsem si myslel
P.S.: nové… jak se to vezme, pokud mne paměť neklame, verze 2.6.0 vyšla někdy na podzim 2003…
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.