Portál AbcLinuxu, 30. dubna 2025 12:46

Tornado-1.2.1 vs Přeháňka-0.1

5.4.2011 18:49 | Přečteno: 1261× | GNU | poslední úprava: 5.4.2011 18:54

Odpoledne nebylo v práci moc co k dělání, tak jsem si četl nějaký zajímavý zdrojáky. Zaujal mě nedávno otevřený Pythoní web server/framework Tornado od Facebooku. Pěkný, čitelný, a dobře zdokumentovaný kód.

Ani jsem si nevšimnul že od 2.6 má python v modulu select funkční podporu pro epoll(). Akorát se mi zdálo že tam (Tornado) mají zbytečně příliš mnoho wrapperů, a taky implementace timeoutů se mi nezdá moc optimální. Zdálo se mi že to musí jít udělat líp. Tak jsem zkusil pustit apache bench na jejich helloworld.py, a naměřil (s vypnutým logováním) cca 1200 req/s.

Pak jsem zkusil to samé napsat bez všech těch přidaných fangliček, a protože to byl jen test, tak i bez timeoutů, bez keep-alive, bez transfer-encoding: chunked, a bez pořádného parsování headerů. To vše by tam ale šlo dodělat, a "horkou" cestu by to nemělo příliš zatěžovat.

A co na to apache bench? Skoro 6000 req/s na stejném HW, zrychlení faktorem 5! Samozřejmě že dynamicky generovat 11-bajtovou stránku je jako test o ničem, ale tak velké zrychlení jsem fakt nečekal. Řekl bych že v Tornadu bude něco ne úplně dobře, a jsem zvědavý co.        

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

5.4.2011 21:02 s0 | skóre: 32 | blog: nejchytřejší kecy | prágl
Rozbalit Rozbalit vše Re: Tornado-1.2.1 vs Přeháňka-0.1
Odpovědět | Sbalit | Link | Blokovat | Admin
ať už je tornado cokoli... pobavil ses/pobavíš se o tom s upstreamem?
Kuolema Kaikille (Paitsi Meille).
6.4.2011 08:30 zde | skóre: 9 | blog: Linuch | Brno
Rozbalit Rozbalit vše Re: Tornado-1.2.1 vs Přeháňka-0.1
No jestli zjistím v čem je ten rozdíl, a bude to opravitelný, tak jo. Třeba ale až udělám pořádný zpracování headerů a skutečnej URL dispatch, zjistím že to až o tolik rychlejší nebude. :( Ty timeouty ale mají podle mě fakt blbě- mají tam pole a do toho při každé aktivitě na deskriptoru insertujou bisectem, to má O(N). Zas je fakt že stejně pomalý je to i pro malej concurrency level, takže to bude i jinde. A ty wrappery vyhodit nemůžou, potřebujou to kvůli SSL, WSGI, xCGI apod, takže by mě stejně poslali do háje.
Táto, ty de byl? V práci, já debil.

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.