Quelqu'un a-t-il des chiffres de performances comparant IIS et .NET à Cherokee et Mono?

8

Je configure un serveur de développement et je souhaite le configurer pour servir des pages ASP.NET en utilisant Mono. Je prévois d'utiliser Cherokee et Mono ( http://www.cherokee-project.com/doc/cookbook_mono.html ) et je me suis demandé si quelqu'un avait fait des tests de performances en comparant la pile basée sur Unix à la pile basée sur Windows.

Larry Smithmier
la source
J'ai fini par aller à la SuseGallery [1] et j'ai fait une recherche rapide pour Mono et j'ai trouvé JEOS Mono ASP.net [2] qui était déjà configuré pour ce que je voulais. Je viens de commencer à utiliser pour certains essais de migration ASP.net sur Windows avec VirtualBox. J'avais juste besoin de démarrer Apache et de configurer la redirection de port. [1]: susegallery.com [2]: susegallery.com/a/0uPadf/jeos-mono-aspnet
Larry Smithmier

Réponses:

7

Lorsque vous testez des charges de travail Mono / Linux vs .NET / Windows, vous devez vous rappeler qu'il y a plus en jeu que l'environnement d'exécution.

Il existe des domaines dans lesquels Linux fonctionne mieux que Windows (la plupart des opérations IO et réseau ont tendance à être plus rapides pour des programmes C comparables). Dans le même temps, .NET dispose d'un garbage collector plus avancé et d'un compilateur JIT plus avancé.

En ce qui concerne les bibliothèques de classes, cela dépend vraiment des chemins de code que vous utilisez. Comme JacksonH l'a dit dans un article précédent, vous pouvez accéder à des chemins de code qui ont été optimisés dans une implémentation, mais pas dans l'autre, et vice versa.

Sur les charges de travail ASP.NET, vous devez vous rappeler que la configuration par défaut achemine toutes les demandes entrantes vers un seul processus "travailleur", mod_mono et Cherokee utilisent une approche similaire:

Plusieurs serveurs HTTP vers un seul serveur mod-mono
(source: mono-project.com )

Au moins avec Apache, nous prenons en charge un mécanisme où vous pouvez diviser les charges de travail des applications entre plusieurs travailleurs, ce qui aide sous des charges élevées car il évite tout verrouillage en cours et donne à chaque travailleur un pool de threads complet à partir duquel travailler:

Routage des demandes vers différents hôtes ASP.NET avec mod_mono
(source: mono-project.com )
Les détails sur la façon de configurer cette configuration sont disponibles ici:

http://mono-project.com/Mod_mono

miguel.de.icaza
la source
7

C'est un peu une non-réponse. Mais il n'y a pas de vraie réponse ici. Malheureusement, cette chose dépend fortement de l'application. Votre application peut toucher quelque chose que Mono réussit très bien ou vous utilisez peut-être beaucoup quelque chose qui est mal implémenté ou qui a des bugs. Ce n'est pas vraiment un cas où Mono est X fois plus lent / plus rapide que IIS.

Ma suggestion est de prendre votre application, de la déployer sur deux instances EC2 différentes (une Windows et une mono) et de faire vos tests là-bas. Si vous rencontrez des problèmes majeurs sur l'instance Mono, veuillez les signaler et nous essaierons d'améliorer les choses.

Cela étant dit, je peux vous dire par expérience personnelle que Mono aspx fonctionne très bien.

jacksonh
la source
Appui - J'utilise Apache + mod_mono, et il fonctionne très bien une fois qu'il a commencé. Le seul moment où je constate une lenteur est lors du chargement initial de la page, mais cela est courant avec à peu près tout (Rails, etc.).
BR