Translate to:

Sledujte YouTube

 

Október 2009
P U S Š P S N
« Sep   Nov »
 1234
567891011
12131415161718
19202122232425
262728293031  

Odznaky

Pixmac pictures
Opencaching.cz - Statistika - georgik


Add to Technorati Favorites

PageRank - hodnotenie tejto webstranky
  • 22Okt

    Ako som už písal, WSGI posúva možnosti hostovania Python aplikácii o míľové kroky dopredu. U WSGI je však jedna zrada, ktorá môže spôsobiť, že vaša aplikácia má namiesto dramaticky vysokého výkonu, výkon dramaticky mizerný.

    Problém je v tom, že väčšina tutoriálov vám odporúča nainštalovať WSGI a spraviť drobnú konfigurácie. Tradá a aplikácia funguje.

    Lenže!

    Ide relatívne rýchlo a ešte rýchlejšie vám zožiera pamäť. Pri vysokej záťaži odvarí server na load 55 a podobné radosti. V čom je problém? Neprečítali ste si manuál.

    Autori WSGI už asi boli znechutený tým, ako na nich ľudia neustále frflú a  upozornenie pre používateľa dali na prvú stránku projektu. Niečo na štýl: nesušte zápalky v mikrovlnke.

    Problém je v tom, že v základnom móde beží WSGI ako embeded aplikácia. Čo je tak dobré na malé jednoduché aplikácie typu Ahoj Mexiko. Pokiaľ teda nie ste expertom na tunenie Apacha, je pre vás vhodnejší mód, kedy beží aplikácia v démon procese.

    Čo na to treba? Vlastne pridať len dva riadky do konfigurácie VirtualHostu:

    WSGIDaemonProcess georgik.sinusgear.com threads=15 maximum-requests=10000
    WSGIProcessGroup georgik.sinusgear.com

    Úžasné! Rozdiel, ktorý vidíte, aj cítite :)

    Update: Rozhodne si prečítajte komentár od Messa. Veľmi dobre vysvetľuje princíp fungovania Apache/Python.

    http://georgik.sinusgear.com/2009/10/22/wsgi-mizerny-vykon-co-tak-precitat-manual/#comment-303

    Posted by georgik @ 10:00

    Tags: , , ,

5 Responses

WP_Orange_Techno
  • 1. zprávy » Georgik // WSGI mizerný výkon? Čo tak prečítať manuál? Says:

    [...] článek: Georgik // WSGI mizerný výkon? Čo tak prečítať manuál? [...]

  • Messa Says:

    A nebo čo tak zapomenout na Apache? :) Pak se člověk nesnaží vše mrzačit pro Apache, protože se to tak kdysi naučil…

  • georgik Says:

    Keby to šlo, tak by to bolo pekné. Každopádne Apache rieši veľa vecí, od load balancingu, cez proxy rules, až po SSL frontend. Obávam sa, že ani jediný Pythónsky framework ho nedokáže zastúpiť.

  • Messa Says:

    Pythonové frameworky ani nejsou určeny k tomu, aby uměly load balancing, proxy rules atd., protože se předpokládá, že budou až za front-end webserverem (Lighttpd, nginx, Apache…), které právě toto umějí. Ani by pak na jedné IP adrese nešlo provozovat víc aplikací :)

    Jde mi o to, že typické přemýšlení taky-admina serveru je “mám Apache, chci jazyk XXX, tak to si musím nainstalovat mod_XXX.” (Naštěstí už je mod_wsgi populárnější než mod_python.) Ale už se nezamyslí nad tím, jak Apache funguje, že po akceptnutí spojení v child procesu se prostě ta WSGI aplikace v tom procesu bude muset spustit (pokud už neběží), a že za pár minut/hodin těch instancí bude aspoň tolik kolik je child procesů, protože narozdíl od PHP se tyto instance po zpracování požadavku neukončí. A těch child procesů je jak malých myší.

    To samé pro každou další takto nasazenou aplikaci – v každém child procesu Apache bude nakonec běžet od každé aplikace jedna instance, přitom je jasné, že v jednom konkrétním čase je využita jen jedna z nich a ty ostatní jen zabírají paměť a čekají na ten správný “jejich” request. A to zde ještě neřeším oprávnění (aby si uživatelé/klienti navzájem nesahali na soubory), to možná ani vyřešit nelze.

    Ale hlavně, že admin nainstaloval mod_něco, vždyť to přeci musí běžet, tak to dělají všichni, ne? Ano, i některé webhostingy používají mod_python, ale jen s nechutí a jen u nejdražších tarifů, proč asi :)

    Systémovým řešením je právě proxování, nebo daemon mód mod_wsgi, což je jen proxování s jiným protokolem. Dokonce za “front-end” web serverem lze spustit dalšího Apache dedikovaného jen pro danou aplikaci, ale to už je lepší spustit HTTP server rovnou v Pythonu (pro produkční nasazení třeba CherryPyWSGIServer, pro vývoj jakýkoliv, třeba ten z wsgiref). Prosím, nemyslete Apache-centricky – nainstalovat mod_něco podle tutorialu občas nestačí, je nutné se zamyslet (když to neudělal autor tutorialu) :)

    Omlouvám se za dlouhý komentář, ale doufám, že jsem aspoň některému čtenáři trochu vyjasnil situaci.

  • georgik Says:

    Vynikajuci komentar! Dakujem!
    Toto by si mali precitat vsetci admini a developeri tiez. :)

Leave a Comment

Please note: Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.