2015-12-23 54 views
13

Jak wygląda wydajność usług IIS w porównaniu z serwerem http Kestrel?Porównanie wydajności IIS z Kestrelem

Wygląda na to, że Kestrel jest w znacznym stopniu inspirowany rodziną asynchronicznych i sterowanych zdarzeniami frameworków serwerowych. W międzyczasie usługi IIS mają długą historię rozwoju i są oczywiście bardziej dojrzałe pod względem funkcji. Biorąc to wszystko pod uwagę, w szczególności szukam porównania wykorzystania pamięci, wykorzystania wątków, porównywania zapytań (takich jak żądanie na sekundę) i możliwości przesyłania strumieniowego.

+0

To jest po prostu niemożliwe na tym etapie, gdy Kestrel nie jest nawet zwolniony. Wydajność samego Kestrel praktycznie nie jest porównywalna z usługami IIS, ponieważ musisz wziąć pod uwagę także jego nginx z przodu, a to wymaga wiele tuningu, zanim osiągniesz dobry wynik. –

+1

@LexLi nie jestem pewien, że rozumiem, co dokładnie jest niemożliwe :) Kestrel jest częścią nowej generacji narzędzi asp.net i jest używany jako samodzielny serwer.Więc * jest * dostępny, ponieważ nowy asp.net jest dostępny. Biorąc pod uwagę wydajność, nie wiem, dlaczego muszę umieścić serwer frontowy do testowania - chodzi o przetestowanie wpływu podejścia opartego na zdarzeniach wprowadzonego przez Kestrel (i libuv) oraz rdzeń IIS – madcyree

+0

Nieuczciwe jest porównywanie serwer webowy z pełnymi funkcjami i serwerem hostingowym z ograniczoną funkcjonalnością. Rozważmy Jetty vs. Kestrel vs. node.js i są one podobne. –

Odpowiedz

9

Oto XSLX file z repo GitHub, gdzie można oglądnąć comparisson wydajności szukasz.

Otwórz plik w programie Excel i sprawdź zakładkę "Najnowsze". enter image description here

+1

Ten benchmark jest w szczególności "zwykłym tekstem", istnieje kilka innych scenariuszy, które są porównywane. Wszystkie są scenariuszami [benchmarki TechEmpower] (https://www.techempower.com/benchmarks/) –

0

Oto kilka wstępnych benchmarków Kestrel autorstwa zespołu asp.net. Chociaż nie jest tak wyczerpująca, jak to, czego szukałeś, okaże się, że zamieszczają one pewne informacje dotyczące RPS. Jestem pewien, że więcej pojawi się, gdy zbliży się do wydania. IIS wzorców można znaleźć w internecie za pomocą prostego wyszukiwania Google:

https://github.com/aspnet/benchmarks

0

Od listopada 2016 r. Prosto z ASP.NET benchmarks.

W systemie Windows Server 2012, na głębokości rurociągu 16:

  • ASP.NET 5 Kestrel: 1,188,521 żądań na drugim
  • ASP.NET 4.6 IIS: 57792 żądanie za drugim

To jest przyspieszenie 20x lub 2000%. Rozumiem w pełni rozwinięty IIS kontra zwykłą Kestrel, ale mam nadzieję, że ktoś z zespołu ASP.NET potrafi to głęboko zanurkować, ponieważ różnica jest olbrzymia.

To i dlaczego w Linuksie jest o wiele wolniej.

benchmark results

+4

Cool. Ale nikt nie używa Kestrela bez serwerów http jako proxy, które mogą obsługiwać wysoki poziom bezpieczeństwa. W rezultacie Kestrel jest bezużyteczny w produkcji. Kolejna specjalna dyscyplina olimpijska. – Maybe

+2

Dlaczego program Kestrel w systemie Linux ma niską wartość rps vs w systemie Windows? –

0

Zrobiłem sporo benchmarkingu dla mojego obecnego projektu, hosting zarówno rdzeń .net 1.0 i 2.0 aplikacji na IIS i pustułka. Testy były rzeczywistymi CRUD-ami spoczynkowymi z uwierzytelnianiem/autoryzacją, rejestrowaniem, pomiarami, ograniczaniem szybkości itd. Ponadto aplikacje .net core zostały całkowicie wykonane przez książkę MS, zgodnie z zalecanymi standardami 1.0/2.0.

Dzięki tym samym ustawieniom sprzętowym, hosting za IIS stale obsługiwał około 40% więcej żądań na sekundę. Nadal nie mogę znaleźć artykułu lub konsultanta, który jest w stanie wyjaśnić różnice w wydajności.

Próbowałem również znaleźć wskazówki optymalizacji od głównego organu testowego https://github.com/aspnet/benchmarks, przeglądając ustawienia i inicjalizatory usług, ale mimo to usługi IIS były po prostu szybsze.

Jakieś wskazówki?