Mono na web?

Re:Mono na web?
« Odpověď #15 kdy: 05. 03. 2012, 23:16:41 »
taky je vyborne django (python))

Jeste porad plati, ze ma Python problem s multihtreadingem?

Pohled treba na https://code.djangoproject.com/ticket/3357 je docela zalostny... a jestli podporu multithreadingu pridali az tady https://code.djangoproject.com/changeset/16427 tak to mi prijde jako docela no comment...


Re:Mono na web?
« Odpověď #16 kdy: 06. 03. 2012, 10:44:38 »
Jeste porad plati, ze ma Python problem s multihtreadingem?

Pohled treba na https://code.djangoproject.com/ticket/3357 je docela zalostny... a jestli podporu multithreadingu pridali az tady https://code.djangoproject.com/changeset/16427 tak to mi prijde jako docela no comment...
runserver je na vyvoj nie na produkcne pouzitie.

btw Andy - js nejak ovladas nie? pozri sa na node.js a express framework a netrap sa s rozchadzanim mona.

Re:Mono na web?
« Odpověď #17 kdy: 06. 03. 2012, 10:51:59 »
runserver je na vyvoj nie na produkcne pouzitie.

Jo, to jsem z toho pochopil, ale porad mi neni jasne, jak je teda udelane produkcni reseni, pokud Python multithreading poradne neumi*. Muze to byt sice navesene na nejaky server (Apache), ktery umi s malou reziji navazat spousty spojeni, ale beztak se musi pozadavky nejak predat pythonu - tak jako tak se musi vytvorit samostatny proces, nebo vlakno. Je mozna nejaka jina cesta? Jak je to vlastne udelane?


* to netrvdim, ptam se. Myslim, ze jeste nedavno platilo, ze Python ma giant lock, jaka je situace ted, to nevim a prave me to zajima

Re:Mono na web?
« Odpověď #18 kdy: 06. 03. 2012, 11:31:01 »
Jak je to vlastne udelane?
aplikacia musi mat wsgi/fastcgi handler, pred nu sa da web server (napr ten apache s mod_wsgi/fastcgi) a ten si riadi procesy/vlakna (pocet sa nastavuje direktivou) aplikacie sam, ale kvoli GIL to nie su nativne vlakna, takze vyuzitie pri multicore asi nie je najlepsie v porovnani s inymi technologiami. http://jessenoller.com/2009/02/01/python-threads-and-the-global-interpreter-lock/.

DarkKnight

Re:Mono na web?
« Odpověď #19 kdy: 06. 03. 2012, 11:56:53 »
M.P.: navic ten bugreport se tykal pouze pridani moznosti spustit runserver bez multithreadingu


Re:Mono na web?
« Odpověď #20 kdy: 06. 03. 2012, 12:18:42 »
ale kvoli GIL to nie su nativne vlakna, takze vyuzitie pri multicore asi nie je najlepsie v porovnani s inymi technologiami. http://jessenoller.com/2009/02/01/python-threads-and-the-global-interpreter-lock/.

No o tohle mi prave jde - ten clanek je taky dva roky stary, zajimalo by me, jaka je situace ted. Vicejadrove systemy jsou cimdal castejsi a pokud je Python neumi vyuzit, tak bych si ho teda doporucit netroufnul...

Inkvizitor

Re:Mono na web?
« Odpověď #21 kdy: 06. 03. 2012, 12:41:51 »
No o tohle mi prave jde - ten clanek je taky dva roky stary, zajimalo by me, jaka je situace ted. Vicejadrove systemy jsou cimdal castejsi a pokud je Python neumi vyuzit, tak bych si ho teda doporucit netroufnul...

(C)Python pořád má GIL a jak to bude s PyPy, které výhledově CPython zřejmě nahradí, je otázka. To ovšem neznamená, že Python neumí využít více jader. V aplikacích, které hojně čakají na I/O, což je případ klasických aplikačních serverů založených na DB, se GIL obchází přirozeně tím, že aplikace z Pythonu odskakuje do nativního kódu. Jinak nikomu nic nebrání používat namísto threadů procesy, kde GIL samozřejmě nebrání paralelizaci vůbec.

Re:Mono na web?
« Odpověď #22 kdy: 06. 03. 2012, 12:47:26 »
No o tohle mi prave jde - ten clanek je taky dva roky stary, zajimalo by me, jaka je situace ted. Vicejadrove systemy jsou cimdal castejsi a pokud je Python neumi vyuzit, tak bych si ho teda doporucit netroufnul...

pypy to bude mat riesene cez http://en.wikipedia.org/wiki/Software_transactional_memory, problem je ze to asi nebude tak rychlo.
V kazdom pripade, toto nie je vec ktoru by som riesil pri pisani beznej webovej aplikacie.

Re:Mono na web?
« Odpověď #23 kdy: 06. 03. 2012, 13:38:27 »
(C)Python pořád má GIL a jak to bude s PyPy, které výhledově CPython zřejmě nahradí, je otázka. To ovšem neznamená, že Python neumí využít více jader. V aplikacích, které hojně čakají na I/O, což je případ klasických aplikačních serverů založených na DB, se GIL obchází přirozeně tím, že aplikace z Pythonu odskakuje do nativního kódu. Jinak nikomu nic nebrání používat namísto threadů procesy, kde GIL samozřejmě nebrání paralelizaci vůbec.

Takze v tomhle ohledu Python za Javou, .NETem, Monem i Erlangem silne zaostava a neni jasne, kdy se to zmeni. Ok, tohle me zajimalo, diky.

tadeas

Re:Mono na web?
« Odpověď #24 kdy: 06. 03. 2012, 14:36:27 »
Prefork děcka, prefork. Diskuze o threadech je naprostý offtopic. PHP pro jistotu thready nemá vůbec a použítí pro web to nijak nevadí.

Re:Mono na web?
« Odpověď #25 kdy: 06. 03. 2012, 14:46:31 »
Prefork děcka, prefork. Diskuze o threadech je naprostý offtopic. PHP pro jistotu thready nemá vůbec a použítí pro web to nijak nevadí.

Nevadi?

Citace
With the Apache prefork or even FastCGI, each apache/php process allocates its own memory. Most healthy sites I have worked on use about 15MB of memory per apache process. Code that has problems will use even more than this. I have seen some use as much as 50MB of RAM. But, lets stick with healthy. So, a server with 1GB of RAM will only realistically be able to run 50 Apache processes or 50 PHP children for FastCGI if each uses 15MB or RAM.
http://brian.moonspot.net/2008/02/13/apache-worker-and-php/

andy

Re:Mono na web?
« Odpověď #26 kdy: 06. 03. 2012, 21:17:21 »
Zavisi od toho, kolko pamate tvoja aplikacia spotrebuje. Tiez ta nikto nenuti pouzivat apache.. Vseobecne je lepsie medzi procesmi ziadne data nezdielat, pretoze sa to zle skaluje a ovela jednoduchsie je pridat dalsi web server, pripadne db server do clustra.

Vseobecne som cakal, ze mi budete radit rozne ine technologie...ale ja som len chcel vediet, ako stoji mono (.net) pri porovnani s javou za behu, co sa tyka spotreby pamate (a mozno vykonu aj ked nepotrebujem). Dakujem za asi 1 ci 2 relevantne (pre mna celkom pozitivne) odpovede. Cakal som, ze opytat sa na fore je rychlejsie ako nainstalovat linux do VMky a nakodit jednoduchu webku ale uz to skoro mam...

Re:Mono na web?
« Odpověď #27 kdy: 06. 03. 2012, 22:26:40 »
Vseobecne som cakal, ze mi budete radit rozne ine technologie...ale ja som len chcel vediet, ako stoji mono (.net)

Spouštěčem byla tvoje věta "Mozno este pogooglim a skoncim pri niecom uplne inom..", pokud jsi o niecom uplne inom slyšet nechtěl a chtěl sis to vygooglit sám, tak se omlouvám :)

Raskal

Re:Mono na web?
« Odpověď #28 kdy: 07. 03. 2012, 01:19:24 »
* Java (tedy spise JVM) neni az tak rozezrana a svoji zdanlivou rozezranost vyvazuje jinymi svymi parametry. Dalsi nevyhoda u Javy je, ze kdyz uz pamet dojde, tak se ta VMka musi otocit (nema privilegovanou oblast pameti jako ma napriklad jadro Linuxu, takze pokud s pameti narazis, tak je JVM v nedefinovanem stavu, protoze nevis kde si co hodilo vyjimku na nedostatek pameti). Shellove skripty urcite jen tak nenahradi, na male veci proste neni optimalizovana. Co se ale podivas na benchmarky vsude na netu (treba jeden z nich http://shootout.alioth.debian.org/u64q/which-programming-languages-are-fastest.php), tak je to vyjimecna technologie. Nicmene je jako kazda jina nastrojem, ktery musi byt vhodne pouzit tak, aby se jeji omezeni projevovaly co nejmene.

* S Monem s/za webserverem si *obecne* nepomuzes v zadnem smeru, pokud k tomu nemas *dobry duvod* proc zrovna Mono (=ala .NET na *NIXu). Jako dobrodruzstvi to bude urcite fajn. Taky jsem to absolvoval.

* V Pythonu ti GIL na webserveru nevadi. Jednoduse proto, ze vstup do IO operace prepina vlakno a zbytek je na procesoru. V cPythonu ciste pythonni interpretace kodu bezi diky GIL synchronne jen v jednom vlakne procesoru. Tedy se to resi jen kdyz nestiha procesor, coz je u webovych aplikaci spise jen vyjimecne. Prefork to jiste resi a navic je i z bezpecnostniho hlediska bezpecnejsi nez vicevlakno. Pokud by k tomu ale presto doslo, tak je spousta jinych moznosti, jak tuto (pro mne doposud jedinou) neprijemnost odstranit. Modul multiprocessing, rpc, socket, shm, ws, ... vse lze pouzit jako transparentni komunikacni mezivrstvu, dale treba jython tento problem nema, ale je cca 10x pomalejsi nez cPython. PyPy je vyjimecny projekt a posouva moznosti uctyhodne kupredu.

* Kazdy siroce pouzivany jazyk ma mnoho frameworku a je to v podstate nekonecny svet, kde se budes casem chtit radne vyznat. Rozhodovanim, ktery z nich si vyberes, se da stravit skutecne hodne casu. Doporucuji si vybrat nejakou tutovku jako zaklad a zbytek si proste prizpusobis podle potreb zakazniku/projektu.

andy

Re:Mono na web?
« Odpověď #29 kdy: 07. 03. 2012, 08:06:37 »
Citace
Spouštěčem byla tvoje věta "Mozno este pogooglim a skoncim pri niecom uplne inom..", pokud jsi o niecom uplne inom slyšet nechtěl a chtěl sis to vygooglit sám, tak se omlouvám
Ano mas pravdu a nemas sa za co omlouvat, ale to bolo skor len take povzdychnutie. Radit mi python, ror atd...nezijem pod balvanom.. :)