Hat jemand Leistungszahlen, die IIS und .NET mit Cherokee und Mono vergleichen?

Hat jemand Leistungszahlen, die IIS und .NET mit Cherokee und Mono vergleichen?

Ich richte einen Entwicklungsserver ein und möchte ihn so einrichten, dass er ASP.NET-Seiten mit Mono bereitstellt. Ich plane, Cherokee und Mono zu verwenden (http://www.cherokee-project.com/doc/cookbook_mono.html) und fragte mich, ob jemand Leistungstests durchgeführt hat, bei denen der Unix-basierte Stack mit dem Windows-basierten verglichen wurde.

Antwort1

Beim Testen von Mono/Linux- und .NET/Windows-Workloads müssen Sie bedenken, dass mehr als nur die Laufzeitumgebung eine Rolle spielt.

Es gibt Bereiche, in denen Linux besser abschneidet als Windows (die meisten E/A- und Netzwerkvorgänge sind bei vergleichbaren C-Programmen tendenziell schneller). Gleichzeitig verfügt .NET über einen fortschrittlicheren Garbage Collector und einen fortschrittlicheren JIT-Compiler.

Bei den Klassenbibliotheken kommt es wirklich darauf an, welche Codepfade Sie verwenden. Wie JacksonH in einem früheren Beitrag sagte, können Sie auf Codepfade stoßen, die in einer Implementierung optimiert wurden, in der anderen jedoch nicht, und umgekehrt.

Bei ASP.NET-Workloads müssen Sie bedenken, dass die Standardkonfiguration alle eingehenden Anfragen an einen einzelnen „Worker“-Prozess weiterleitet. Mod_mono und Cherokee verwenden einen ähnlichen Ansatz:

Viele HTTP-Server zu einem Mod-Mono-Server
(Quelle:mono-project.com)

Zumindest mit Apache unterstützen wir einen Mechanismus, mit dem Sie Anwendungsworkloads auf mehrere Worker verteilen können. Dies ist bei hoher Last hilfreich, da es In-Process-Locking vermeidet und jedem Worker einen ganzen Thread-Pool zum Arbeiten zur Verfügung stellt:

Weiterleiten von Anfragen an verschiedene ASP.NET-Hosts mit mod_mono
(Quelle:mono-project.com)
Die Details zur Konfiguration dieses Setups finden Sie hier:

http://mono-project.com/Mod_mono

Antwort2

Das ist irgendwie keine Antwort. Allerdings gibt es hier keine richtige Antwort. Leider ist diese Sache stark anwendungsabhängig. Ihre App könnte auf etwas stoßen, was Mono zufällig wirklich gut kann, oder Sie könnten etwas stark verwenden, das schlecht implementiert ist oder einige Fehler aufweist. Es ist nicht wirklich so, dass Mono X-mal langsamer/schneller als IIS ist.

Mein Vorschlag ist, Ihre App zu nehmen, sie auf zwei verschiedenen EC2-Instanzen (einer Windows-Instanz und einer Mono-Instanz) bereitzustellen und dort Ihre Tests durchzuführen. Wenn Sie bei der Mono-Instanz größere Probleme feststellen, melden Sie diese bitte und wir werden versuchen, die Dinge zu verbessern.

Dennoch kann ich Ihnen aus eigener Erfahrung sagen, dass Mono aspx wirklich gute Leistungen erbringt.

verwandte Informationen