AppFabric Cache-Server und Webanwendung auf demselben physischen Computer

9

Ich erwäge, die AppFabric-Caching-Funktion für eines unserer Projekte zu verwenden. Wir benötigen eine verteilte Caching-Funktion und AppFabric scheint eine gute Lösung zu sein. Ich habe jedoch ein paar Fragen, von denen ich hoffe, dass sie hier beantwortet werden.

Wir überlegen, den AppFabric Cache-Server auf demselben Computer zu hosten, auf dem unsere Webanwendung installiert ist. Ich habe auf MSDN Artikel gefunden, der besagt, dass AppFabric auf einem dedizierten Computer installiert werden sollte. Es wird auch darauf hingewiesen, dass AppFabric auf demselben Computer wie die Anwendung selbst installiert werden kann, aber einige Probleme sollten berücksichtigt werden (Zitat aus Artikel):

  

Windows Server AppFabric-Cache-Hosts sollten dem Caching-Service zugewiesen sein, was bedeutet, dass diese Server nicht als Anwendungs-, Web- oder Datenbankserver verwendet werden. Es ist möglich, nicht dedizierte Cache-Server in einem Cluster zu verwenden, dieses Szenario wird jedoch nicht unterstützt. Wenn Sie sich trotz dieser Richtlinie für nicht dedizierte Cache-Hosts entscheiden, müssen Sie die Konfiguration für jeden Cache-Host richtig abschätzen und testen, um genügend Speicher- und Netzwerkressourcen sowohl für den Caching-Service als auch für alle anderen Dienste auf den Computern bereitzustellen. Beachten Sie außerdem, dass Spitzen bei der Prozessor- und Netzwerknutzung durch andere Dienste die Leistung und Stabilität des Cache-Clusters beeinträchtigen.

Hier ist ein Link zu diesem Artikel: Artikel # 1

Nun, das klingt vernünftig genug, ich dachte, dass die Begrenzung des RAM-AppFabric-Cache ausreichen würde. Aber beim Lesen eines anderen Artikels auf MSDN habe ich folgendes gefunden:

  

Bei physischen und virtuellen Maschinen sollten Sie den Speicherort des Cache-Clusters für die Anwendungen oder Webserver beachten, die den Cache verwenden. Stellen Sie sicher, dass sich die Latenz zwischen diesen Datencentern nicht negativ auf Ihre Leistung auswirkt, wenn sie sich in separaten Rechenzentren befinden. In diesem Stadium könnte es verlockend sein, Ihre Anwendungs- oder Webserver für Ihre Cache-Server zu verwenden. Obwohl dies möglich ist, wird dies nicht unterstützt. Erstens können Ressourcenauslastungsspitzen durch Dienste wie IIS auf diesen Computern den Cache-Cluster beeinträchtigen. Zweitens geht der Caching-Dienst davon aus, dass er sich auf einem dedizierten Server befindet und potenziell mehr Speicher verwenden kann, als Sie angeben.

Hier ist ein Link zu diesem Artikel: Artikel # 2

Wenn ich obige Aussage richtig verstehe, bedeutet dies, dass trotz meiner Konfigurationseinstellungen für AppFabric so viel RAM benötigt wird, wie er möchte. Kann das wirklich wahr sein? Hat jemand Erfahrung mit der Konfiguration, wo sich Anwendung und AppFabric auf demselben Computer befinden?

    
buhtla 16.11.2011, 08:13
quelle

1 Antwort

4

Um meine Geschichte auf appfabirc zu teilen, haben wir begonnen, Appfabric-Caching auf einem gemeinsam genutzten Server zu verwenden, mussten es aber aufgrund der folgenden Probleme schließlich herausnehmen ...

  1. wir haben versucht, Objekte darin zu speichern, und tun müssen, dass Sie den gesamten Graphen serialisieren und an den Server senden müssen, in einem stark nachgefragten Szenario, nicht sicher, wie viel effizienter es ist, als von db selbst abzuziehen . Außerdem können Sie sich von irgendwelchen Delegierten- oder Event-Verbindungen oder asynchronen Operationen in Ihren Objekten verabschieden.

  2. Der Caching-Dienst selbst würde zeitweise Fehler ausgeben, die sagen, dass er nicht verfügbar ist, und dann müssen Sie gehen und seinen Zustand mit Powershell überprüfen. Auch wenn Ihre Box mehr als 90% RAM verwendet, würde es aufhören zu arbeiten.

  3. Selbst wenn die Box einen kleinen Speicherdruck hat, versucht sie aggressiv Objekte aus dem Cache zu entfernen und nimmt dafür immer 10-20% der CPU in Anspruch ....

Um es zusammenzufassen, ich denke, MS-Empfehlung ist richtig, dass es einen eigenen dedizierten Cluster haben muss, aber dann wiederum hat jede Anwendung ihre eigenen Bedürfnisse und Sie sollten sie gegen Parameter in Ihrer Implementierungsumgebung auswerten.

    
np-hard 17.11.2011 15:39
quelle