Ich habe einen C# -Server, der auf Visual Studio 2010 und Mono Develop 2.8 entwickelt wurde. NET Framework 4.0C# -Server-Skalierbarkeitsproblem unter Linux
Es sieht so aus, als ob dieser Server unter Windows viel besser (in Bezug auf Skalierbarkeit) verhält als unter Linux. Ich testete die Server-Skalierbarkeit auf nativem Windows (12 physikalische Kerne) und 8 und 12 Kerne Windows und Ubuntu Virtual Machines mit Apache ab-Tool.
Die Reaktionszeit der Fenster ist ziemlich flach. Es fängt an zuzunehmen, wenn die Nebenläufigkeitsebene die Anzahl der Kerne erreicht/überwindet.
Aus irgendeinem Grund sind die Antwortzeiten von Linux viel schlechter. Sie wachsen ziemlich linear ab Level 5 der Nebenläufigkeit. Auch Linux VM mit 8 und 12 Kernen verhält sich ähnlich.
Also meine Frage ist: Warum funktioniert es schlechter auf Linux? (Und wie kann ich das beheben?).
Schauen Sie sich bitte das beigefügte Diagramm an, es zeigt die gemittelte Zeit für die Erfüllung von 75% der Anfragen als Funktion der Anforderungen Nebenläufigkeit (die Bereichsleiste wird auf 50% und 100% gesetzt).
Ich habe das Gefühl, dass dies auf Monos Garbage Collector zurückzuführen sein könnte. Ich habe versucht, mit den GC-Einstellungen herumzuspielen, aber ich hatte keinen Erfolg. Irgendwelche Vorschläge?
Einige zusätzliche Hintergrundinformationen: Der Server basiert auf einem HTTP-Listener, der die Anforderungen schnell analysiert und sie in einem Threadpool in eine Warteschlange stellt. Der Thread-Pool kümmert sich darum, diese Anfragen mit einigen intensiven Berechnungen zu beantworten (Berechnung einer Antwort in ~ 10 Sekunden).
Was ist ein "C# -Server"? Ist das anders als ein Server? Ich meine, in deinem Titel wird "C#" als Adjektiv verwendet? Ist ein "C# -Server" eine Art Server? –
> einige intensive Mathematik (Berechnung einer Antwort in ~ 10 Sekunden). Ich denke, dein Problem ist da .. Es ist kein typisches Szenario für einen Server. Wie viele Kerne haben Ihre physische Hardware, 12? Wie sieht das Diagramm nach den 10 gleichzeitigen Anfragen aus? – Soonts
Wie ich weiß, ist Mono für diese Anwendungen nicht geeignet. Die Entwicklung von Mono konzentriert sich auf kleine Desktop-Anwendungen. Ich bekomme diese Informationen von einem Mono-Entwickler, ich werde versuchen, weitere Informationen zu finden und werde hier posten, wenn ich finde. – LawfulHacker