Hlavní navigace

Optimalizace metodou pokus-omyl

29. 4. 2013 11:47 (aktualizováno) | Pavel Chalupa

Při provozování vlastního webu a sledováním ostatních webů jako návštěvník, jsem přišel na pár věcí. A v neposlední řadě, nějaký HW a SW k tomu sám musím používat, jako každý.

Rychlost načítání stránky

Seberychlejší přípojka k netu nic neřeší. V první až druhé sekundě se na jedno spojení nedostanete výš než na 100KB/s. Odhaduji, že to je samotným principem TCP/IP a navyšováním rychlosti pokud to linka dovolí. Pokud prohlížeč naváže celkem 10 spojení už to je 1MB/s. Tady už narážíme na problém na serveru, aby dokázal připravit a odeslat během 1s celý 1MB (8Mbit volná kapacita pro jednoho uživatele). Taky by to asi muselo být odbavováno přes SPDY od Googlu, aby v jednom spojení jelo více menších souborů. Ale už si nedovedu představit, že by se takhle během jedné sekundy odbavilo 12 lidí, to už je 100Mbit na serveru.

Ale co jsem tím chtěl vlastně říct? Že mít webové stránky, kde při každém kliknutí čekám několik sekund, než si přečtu pár kilo textu, to je zrůdnost. Funguje to na většině mnou čtených technických webů a o to je to zrůdnost na druhou. Milión dotazů ukazuje prohlížeč a já čekám, než se to natahá z netu. Hrůza. A nedovedu si představit, kdybych si ještě nechal puštěné reklamy.

Závěr mého zkoumání

Web by měl mít soubory do 100KB a pokud budu předpokládat paralelní stahování v deseti spojeních, tak by se (s použitím SPDY – více malých souborů – třeba 5–10KB grafické prvky) měla každá jednotlivá stránka komplet vejít do 1MB, pokud na ní nejsou vyloženě fotky.

Souvislost s vlastním webem

U jednoho z hlavních scriptů jsem svojí leností zvětšil HTML základ o 70KB. Stránka pak přesáhla 100KB limit. Prohlížeč zobrazoval stránku průběžně a vykreslil ji neúplnou. Trošku jsem to upravil a zkrátil na 20KB a celá stránka neměla víc než 60–70KB. Pak to fungovalo jak má, stránka se zobrazila najednou, během té jedné sekundy. Kvůli rychlosti jsem taky odstranil téměř všechny externí dotazy na jiné servery (externí statistiky apod.).

Ostatní weby

Nechápu, jak si většina webových programátorů pochvaluje ty nabubřelé frameworky a tuny javascriptu. Je to sice moderní, rychle se v tom tvoří, ale je to pomalé pro návštěvníky. Dřív jsem si myslel, že by to z hlediska rychlosti neměl být problém, že se to stahuje z webu jen jednou, ale realita je jiná. Pořád na webu čekám, než se něco natáhne (+milion externích serverů). Právě proto, že i když mám linku, která mi dá 1MB/s, tak spojení se servery začíná v prvních sekundách vždy někde na 100KB/s a víc to nepojede. Spousta lidí má mnohem horší technické podmínky a mají třeba jen 2Mbit linku a pro ty to musí být utrpení ten dnešní web. A to vůbec škoda mluvit o používání webu s mobilním připojením s nízkým datovým limitem.

Naštěstí :-)

Naštěstí nejsem profesionál a nikdo mě nenutí držet se trendů a můžu si tvořit a optimalizovat podle toho, co si myslím, že je skutečně důležité pro návštěvníka. Návštěvníka nezajímá jestli je to „moderní“ a vyhraju technologickou soutěž v „poměřování pindíků“, návštěvník chce obsah a informace a nebude čekat 5–10s na každé kliknutí.

Souvislost optimalizace s Linuxem

Na třech počítačích mám stále Lubuntu 10.04, protože v základu je to extra rychlé. Čtvrtý PC zvládá Lubuntu 12.04. Na těch prvních třech už dva mají staré jádro z doby vydání distribuce 10.04. Z jednoho prostého důvodu. Všude jsou obyčejné HDD a se starým jádrem nastartují z GRUBu do desktopu za čistý čas 10s. Když dám aktuální záplatované jádro startuje to 20s. Tomu pak i odpovídá rychlost spouštění aplikací a práce se systémem. Vidím jedinou příčinu: SSD. Těžko to zoptimalizujete, když to budete ladit na PC s SSD, tenhle rozdíl neuvidíte.

Základní pravidlo pro odlehčenou distribuci je, že ji musíte občas spustit na starém železe, na které je určena. Rád bych třeba aktualizoval na Lubuntu 12.04, ale zdá se, že byly vyházeny ovladače všech starších grafických karet a instalace se kvůli tomu nepovede. Už jsem takhle narazil u 12.04 asi čtyřikrát i když PC by s 12.04kou bylo dost rychlé.

Taky jsem metodou pokus omyl zjistil optimální nastavení HW. U starého Athlonu XP mám paměti na 166MHz (DDR333) a sběrnice na 133MHz a frekvence procesoru x11. Jde to přetaktovat někde na 180–190MHz. Ale ani v základu 133MHz ani 180MHz to nejede optimálně, stále dochází k viditelnému zasekávání uživatelského rozhraní na desetiny sekundy a špatně se to používá. V okamžiku, kdy sběrnici nastavím na 166MHz, aby běžela stejně jako paměti, je po problému. Nevím jestli to je problém s deskou, ale prostě se to děje.

Závěr

V budoucnu budu muset ze softwarového hlediska asi začít víc zkoumat Linux do hloubky, abych mohl používat aktuální software na starém HW. Dělám to z jediného důvodu: všechno novější, co jsem za poslední dobu koupil, odešlo půl roku po záruce. Zato všechen HW starší než 2006 stále přežívá. Naštěstí při upgradu starší věci schovávám a jednu starší věc za druhou postupně vytahuju.

Nebuďte tak nadšení z nového HW, nebudete se radovat dlouho.

Nebuďte nadšení z tuny frameworků na webu a že se vám v tom rychle dělají startupy. Ve světě softwaru a netu můžete nabídnout stejný produkt jako konkurence, software a produkty se kopírují. Můžete se však odlišit optimalizací a rychlostí. SSD si taky vybíráte kvůli rychlosti. Na netu jste však vždycky limitováni 100KB/s hranicí, jak jsem psal na začátku.

Za celý život s počítačema (a platí to i pro mobily) se mi nestalo, že by dnešní SW běžel rychle na dnešním HW včetně dnešní rychlosti netu a webu. Každý rok se to zhoršuje.

Celkově mi dá dost práce najít použitelné kombinace pro každodenní práci, včetně dlouholeté spolehlivosti HW i SW.

Asi profesně nejblíž mám k softwaru jako k oboru a úplně se stydím co se v tomto oboru děje. To už je jen pomalý bloatware a úplně všude, včetně linuxového jádra za poslední rok nebo dva. A samozřejmě frameworky na webu jako další příklad bloatware.