Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

IIS vs Kestrel performance comparison

How does the performance of IIS look like comparing to a Kestrel http server?

Seems like Kestrel is significantly inspired by the family of asynchronous and event-driven server frameworks. In the meantime, IIS has a long history of development and obviously more mature in terms of features. Taking all that into account, I'm specifically looking for a comparison of memory utilization, thread utilization, request related comparison (like request-per-second) and streaming capabilities.

like image 996
madcyree Avatar asked Dec 23 '15 17:12

madcyree


People also ask

Should I use kestrel or IIS?

The main difference between IIS and Kestrel is that Kestrel is a cross-platform server. It runs on Linux, Windows, and Mac, whereas IIS is Windows-specific. Another essential difference between the two is that Kestrel is fully open-source, whereas IIS is closed-source and developed and maintained only by Microsoft.

Can I use Kestrel in IIS?

Kestrel can be used by itself or with a reverse proxy server. A reverse proxy server receives HTTP requests from the network and forwards them to Kestrel. Examples of a reverse proxy server include: Internet Information Services (IIS)

Should I use Kestrel production?

The recommended way to use Kestrel in a production environment is to place it behind a reverse proxy. The reverse proxy can handle things that Kestrel isn't well suited for—like serving static files, SSL termination, and response compression.

Does Azure App Service use IIS or kestrel?

Additional resources. Azure App Service on Windows Server uses Internet Information Services (IIS).


2 Answers

Here is the XSLX file from the GitHub repo where you can see the performance comparisson you are looking for.

Open the file on Excel and check the "Latest" tab. enter image description here

Update: The excel file is no longer available and has been replaced with an interactive Power BI dashboard.

like image 86
Matias Quaranta Avatar answered Sep 19 '22 17:09

Matias Quaranta


I did quite a bit of benchmarking for my current project, hosting both .net core 1.0 and 2.0 apps on IIS and Kestrel. The tests were real-world rest-api CRUDs with authentication/authorization, logging, metrics, rate limiting etc. Also, .net core apps were done completely by the MS book, complying to recommended 1.0/2.0 standards.

With the same hardware setups, hosting behind IIS constantly served around 40% more requests per second. I'm still unable to find an article or a consultant who is able to explain the performance difference.

I also tried to find any sort of optimization tips from the core benchmarking authority https://github.com/aspnet/benchmarks, by rummaging through settings and service initializers, but still, IIS was just faster.

Any pointers?

like image 43
Milan Vidakovic Avatar answered Sep 18 '22 17:09

Milan Vidakovic