Porównanie wydajności usług IIS + ASP.NET (NGINX + FastCGI + Mono lub XSP)?


Ile żądań może obsłużyć każdy? Ile pamięci RAM potrzebujesz?
O ile pamiętam, FastCGI to otwarte zainicjowane procesy, każdy może obsłużyć jedno żądanie.
A co z wielowątkowością?
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Aktywnie rozwijam się w PHP i ASP.Net. Nie mogę udawać, że mam głęboką wiedzę na temat IIS lub NGINX, ale BARDZO znam Apache i Lighttpd.
ASP.Net wykorzystuje architekturę wielowątkową, która jest w dużej mierze częścią samego serwera WWW. Zmienne statyczne zachowują swoją wartość między żądaniami i między użytkownikami. W tym miejscu ASP.Net uzyskuje maksymalną przewagę szybkości. Pamięć współdzielona jest przechowywana w ramach każdego indywidualnego procesu i między wątkami. Poszczególne procesy nie współużytkują pamięci. Dlatego w przypadku skalowania poza pojedynczy serwer traci się większość tej korzyści.
PHP jest zbudowany w starym stylu CGI, w którym każde żądanie jest pustą tablicą. Oznacza to, że wszelkie ogólne informacje muszą zostać odzyskane ze współużytkowanej pamięci masowej lub całkowicie odzyskane. PHP NIE jest wolny, jest inny. Większość podstawowych operacji w PHP to wywoływanie modułów napisanych w C, dzięki czemu działają błyskawicznie. Sam PHP nie jest tak szybki jak język skompilowany, ale w żadnym wypadku nie jest wolniejszy. Istnieją (bardzo popularne) moduły PHP, które buforują skompilowane (w pamięci) wersje kodu i mogą poprawić wydajność od 4 do 10 razy.
PHP istnieje od dawna i istnieje wiele rozwiązań dla jego stylu CGI. xcache oferuje magazyn wartości bardzo podobny do zmiennych statycznych ASP.Net. Memcache oferuje nieco wolniejsze, ale lepsze rozwiązanie do skalowania (między fizycznymi serwerami) dla trwałych zmiennych współdzielonych.
ASP.Net oferuje dużo więcej formalizmu i struktury. Ale źli programiści mogą zepsuć każdy język. Jeśli wybierzesz ASP.Net, powinieneś zapoznać się z niektórymi świetnymi bibliotekami firm innych niż Microsoft do programowania. (np. NHIbernate & amp;

http://www.castleproject.org/
http://www.castleproject.org/
)
Moje osobiste preferencje (jeśli nie płacą mi za inne czynności) to PHP. Chociaż wymaga zmniejszenia szybkości, jest łatwiejszy do opracowania i mniej trudny do skalowania (nawet jeśli wymaga więcej serwerów PHP niż .Net). Serwery są znacznie tańsze niż programiści.
W każdym razie dowolna aplikacja internetowa & > 2.0 będzie powiązany z danymi, a konfiguracja bazy danych będzie miała znacznie większy wpływ na wydajność niż wybór języka.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Wykonałem prosty test strony internetowej asp.net mvc3 działającej w usługach IIS7 w systemie Windows 7 i tej samej witryny działającej na centos 6.2 z mod_mono i mono 2.11.2. Są to obie maszyny wirtualne na tym samym sprzęcie działającym na maszynie wirtualnej. Właściwa maszyna to Core i5.
używanie ławki Apache z innej maszyny Linux w tej samej sieci (ab -n 1000 -c 100)
Centos 6.2 (default settings, no other sites running on 8088)
Server Software: Apache/2.2.15
Server Hostname: 192.168.1.208
Server Port: 8088Document Path:/
Document Length: 24 bytesConcurrency Level: 100
Time taken for tests: 3.401 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 354000 bytes
HTML transferred: 24000 bytes
Requests per second: 294.01 [#/sec] (mean)
Time per request: 340.124 [ms] (mean)
Time per request: 3.401 [ms] (mean, across all concurrent requests)
Transfer rate: 101.64 [Kbytes/sec] receivedConnection Times (ms)
min mean[+/-sd] median max
Connect: 0 3 6.4 0 25
Processing: 14 321 71.1 325 483
Waiting: 14 321 71.1 325 483
Total: 39 324 67.8 326 483Percentage of the requests served within a certain time (ms)
50% 326
66% 344
75% 358
80% 370
90% 408
95% 426
98% 441
99% 445
100% 483 (longest request)(Again default settings, Windows 7 x64)
Server Software: Microsoft-IIS/7.5
Server Hostname: 192.168.1.115
Server Port: 8088Document Path:/
Document Length: 27 bytesConcurrency Level: 100
Time taken for tests: 0.469 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 294783 bytes
HTML transferred: 27351 bytes
Requests per second: 2131.09 [#/sec] (mean)
Time per request: 46.924 [ms] (mean)
Time per request: 0.469 [ms] (mean, across all concurrent requests)
Transfer rate: 613.48 [Kbytes/sec] receivedConnection Times (ms)
min mean[+/-sd] median max
Connect: 4 17 4.6 17 27
Processing: 12 28 6.9 28 61
Waiting: 9 22 6.9 22 55
Total: 24 45 7.0 45 67Percentage of the requests served within a certain time (ms)
50% 45
66% 48
75% 49
80% 50
90% 52
95% 55
98% 59
99% 62
100% 67 (longest request)

Jestem pewien, że możesz dostosować opcje itp. Ale jeśli brakuje mi czegoś prostego, usługi IIS wydają się być wielokrotnie szybsze dzięki mvc asp.net.
Sam program był w większości pusty, wystarczyło jedno słowo.
To nie jest najlepszy test iz pewnością nie jest to coś, co dałbym swojemu szefowi. Podejrzewam, że mono będzie lepiej wyświetlać się z nginx lub lighttpd, ale nie mam ich teraz.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Uruchamiamy aplikację asp.net MVC zarówno w usługach IIS, jak i XSP, a usługi IIS przewyższają XSP zarówno pod względem wydajności, jak i niezawodności.
Możesz dość łatwo uruchomić testy porównawcze, ale XSP nie jest przeznaczony do środowisk produkcyjnych. Zgłosiliśmy błąd, który czasami powodował awarię XSP, którego nie zamierzają naprawić (oczywiście z powodu głębokiej zmiany architektury). W końcu po prostu zawinęliśmy i ponownie uruchomiliśmy proces, gdy umarł, ale powinieneś wiedzieć, że te dwa (XSP i IIS) to bardzo różne bestie.
Jeśli korzystasz z systemu Windows, użyj usług IIS. IIS7 wcale nie jest taki zły.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Około rok temu Microsoft opublikował test IIS + WCF o nazwie

StockTrader
http://msdn.microsoft.com/en-u ... px... Niezupełnie test internetowy. W każdym razie działał bardzo dobrze z usługami IIS, przepływami pracy i kodem .NET.
7 lub 8 lat temu testy obciążenia sieci były bardziej aktywne. Ale w pewnym momencie wydawało się, że wydajność była tak dobra, że ​​na jednym standardowym serwerze Intela na dużą skalę używasz Linuksa + ??? lub Windows + .NET, otrzymujesz naprawdę dobrą wydajność. (Pod warunkiem, że aplikacja jest rozsądnie zaprojektowana).
Nie mogę jednak wypowiadać się na temat PHP i FastCGI.
I nie znam nikogo, kto porównuje Linux + Mono + XSP z Windows + .NET + ASPNET na tym samym sprzęcie.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:


Istnieją tutaj świetne testy dla usług IIS i nginx:

(a także Apache, Cherokee, G-WAN, Lighttpd, Ulib itp.)
Na

Linux

:
http://gwan.ch/en_linux.html
http://gwan.ch/en_linux.html
Na

Windows

:
http://gwan.ch/en_windows.html
http://gwan.ch/en_windows.html
Przez

PHP, Java i C #

:
http://gwan.ch/
http://gwan.ch/
Nigdzie indziej nie widziałem tak wyraźnych porównań. Kod źródłowy testu (w PHP, Java, C #) jest również dostępny tutaj:
http://gwan.ch/source/
http://gwan.ch/source/
Mam nadzieję, że to pomoże.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Mam jedną małą opinię: przez ostatnie kilka lat pracowałem z .net C # z IIS na dużej stronie internetowej, którą zaczynaliśmy od IIS6, a teraz przeniosłem się na IIS7. 99% usług IIS wykonało swoją pracę bardzo dobrze z .net (buforowanie, przetwarzanie żądań itp.)
Ponieważ Linux jest tańszy i lubię centos, próbowałem przejść na tryb mono z jednym środowiskiem testowym i zauważyłem pewną zmianę wydajności. Może nie wiedziałem, jak poprawnie skonfigurować środowisko.
Moje osobiste doświadczenie teraz:
Jeśli chcę stworzyć dowolną stronę internetową z php, instaluję ją na moim serwerze Linux (Centos6, nginx, php-fpm, mariadb, apc cache)
Kiedy muszę coś zrobić w C #, instaluję to na Windows Server 2008, mniej bólu głowy, większa niezawodność i wsparcie.
Jedynym minusem Microsoft Server jest cena. Jeśli jesteś małym programistą, minimalne wymagania sprzętowe dla systemu MS są znacznie niższe niż dla komputera z systemem Linux.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Nie polecam usług IIS. Po pierwsze, pomija wiele BARDZO ważnych funkcji (takich jak dos_evasive), po drugie, zużywa dużo pamięci, po trzecie, konfiguracja jest koszmarem i jest inna dla każdej wersji IIS (napisz dokumentację "a" - napisz 3 [ iis 5,6,7]). Wydajność IIS jest również niska, po czwarte, napotkasz problemy z segmentacją pamięci (czy musisz restartować serwer co 20 minut?), A po piąte, najbardziej fatalny, wymagany jest system operacyjny MS (RAM od 1 do 2 GB tylko do uruchomienia systemu operacyjnego). Ponadto dobra zapora ogniowa jest warta fortunę.
Pochodzę z Linuksa, a teraz pracuję dla Windows Corporation.
Mogę tylko powiedzieć, że ta zmiana była najgorszą decyzją, jaką kiedykolwiek podjąłem.

Nie tylko będziesz musiał pracować na notorycznie niestabilnej platformie, ale będziesz miał również trudności z pisaniem instalatorów (instalator Windows nie może ładować łańcuchowo, co może zrobić każdy instalator Linuksa, aplikacje nie mogą się odinstalować, więc nie ma prawdziwych, samoczynnie aktualizujących się aplikacji) trzeba napisać sam aktualizator, podczas gdy w Linuksie apt zajmuje się wszystkim). Przełączasz się także na platformę, na której domyślną przeglądarką jest IE.

Mogę tylko powiedzieć, że spędzam dni na tworzeniu aplikacji internetowych kompatybilnych z IE, gdzie potrzebujesz tylko godzin dla Linuksa, ponieważ nie musisz naprawiać wszystkich tych błędów przeglądarki BASIC IE za pomocą TWOJEGO KODU, ponieważ IE nie działa na Linuksie może, ale to nielegalne) ...

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się