Mirki z #programowanie oraz #programista15k, także #php i #python. Mam taką zagwozdkę. Porównując portal (około 400 podstron + mysql) z ruchem na poziomie 100k miesięcznie, który framework jest wydajniejszy (lżejszy dla serwera) Django (2.1) czy Symfony (4.1)?
@pepedros: 100k odsłon miesięcznie to nie jest jakoś specjalnie dużo. Wybierz to, w czym będzie przyjemniej, łatwiej i lepiej się orientujesz, a prawie zawsze będzie to lepszy wybór.
Django jest w pełni synchroniczne więc potrzebujesz jednego wątku na połączenie.
W sytuacji, gdzie asynchroniczne serwery używają event loop'a, django używa puli wątków, więc każdy wątek pracuje dopóki określony request się nie skończy.
Nie da się powiedziec, ile dany serwer/aplikacja obsłuży. Jeżeli przeciętny request zajmuje 100ms, wtedy nawet pojedyńczy wątek obsłuży 10 RPS(requests-per-second). I teraz, jeżeli pojedyńczy request zajmuje 100ms, a 90ms
@Lunatik: true, ale jeszcze w zaleźności co to za "portal", szablony możesz cachować, tak samo jak zapytania do db i może się okzać że to co zjada najwięcej, jest nieistotne ;)
jeżeli pojedyńczy request zajmuje 100ms, a 90ms z tego spędza w oczekiwaniu na bazę danych
@Lunatik: no jednak zwykle tak jest, że to baza i sieć są wąskim gardłem. A jeśli kod wykonuje się za długo, to można rozważyć na przykład przeniesienie do asynchronicznych tasków.
Ogólnie w web devie poza skrajnymi przypadkami czas wykonywania kodu nie jest problemem.
No, chyba, że aplikacja robi jakieś #!$%@? rzeczy i inicjalizuje miljon instancji modelu
Już pomijam, że wydajnosc aplikacji w 99% zależy od ciebie a nie frameworka którego użyjesz
Django jest w pełni synchroniczne więc potrzebujesz jednego wątku na połączenie.
W sytuacji, gdzie asynchroniczne serwery używają event loop'a, django używa puli wątków, więc każdy wątek pracuje dopóki określony request się nie skończy.
Nie da się powiedziec, ile dany serwer/aplikacja obsłuży. Jeżeli przeciętny request zajmuje 100ms, wtedy nawet pojedyńczy wątek obsłuży 10 RPS(requests-per-second).
I teraz, jeżeli pojedyńczy request zajmuje 100ms, a 90ms
To brzmi jak nic ;)
Odpowiednio ustawisz nagłówki cache'ujące i będzie śmigać. Przy takim ruchu Django ustawiasz na 16 wątków, a pliki statyczne podaje serwer webowy.
@Lunatik: W PHP też potrzebujesz jednego wątku na połączenie ;) Zarówno w
mod_php
,php-fpm
jak iuwsgi
.@Lunatik: no jednak zwykle tak jest, że to baza i sieć są wąskim gardłem. A jeśli kod wykonuje się za długo, to można rozważyć na przykład przeniesienie do asynchronicznych tasków.
Ogólnie w web devie poza skrajnymi przypadkami czas wykonywania kodu nie jest problemem.
No, chyba, że aplikacja robi jakieś #!$%@? rzeczy i inicjalizuje miljon instancji modelu