Wie kann Windows Server 2008 R2 für viele Verbindungen verbessert werden?

9

Es ist ein paar Tage her, dass ich versuche herauszufinden, wie ich dieses Problem lösen kann. Zunächst betreibe ich eine Website mit einem durchschnittlichen täglichen Seitenaufruf von 350.000. Bisher wurden die gesamte Anzeigenverwaltung (Verfolgung von Klicks und Impressionen, die von jeder Anzeige geliefert wurden) und der Inhalt auf einem einzigen Server mit der folgenden Spezifikation geliefert:

Server 1
Betriebssystem: Windows 2008 R2 64-Bit
CPU: Intel® Core ™ i5 - 4 Kerne
RAM: 8 GB
Speicher: 2 x 1 TB Festplatten
Bandbreite: 10 TB pro Monat

Um die Geschwindigkeit unserer Website zu verbessern, habe ich beschlossen, das Anzeigenverwaltungsskript von einem anderen dedizierten Server zu trennen, da wir pro Seite mehr als 15 Werbetreibende bis 30 Werbetreibende haben.

Server 2
Betriebssystem: Windows 2008 R2 64-Bit
CPU: Intel® Core ™ i5 - 4 Kerne
RAM: 4 GB
Speicher: 2 x 300 GB Festplatten
Bandbreite: 10 TB pro Monat

Das Problem
Das Problem ist, dass Server 1sowohl Content- als auch Anzeigensystem verarbeitet werden können. Nun, da ich das Anzeigensystem wegnehme und es auflege Server 2. Server 2kann kaum nur Anzeigensystem bedienen.

Prüfung

  • Zunächst habe ich 75% der Anzeigen nach verschoben Server 2. Führen Sie dann einen Ping an den Server durch : ping -t xxxxx. [Ich habe den Ping für 10 Minuten gemacht und das folgende ähnliche Muster wie unten]
Antwort von xxxxx Bytes = 32 Zeit = 290 ms TTL = 116
Antwort von xxxxx Bytes = 32 Zeit = 289 ms TTL = 116
Antwort von xxxxx Bytes = 32 Zeit = 320 ms TTL = 116
Antwort von xxxxx Bytes = 32 Zeit = 286 ms TTL = 116
Antwort von xxxxx Bytes = 32 Zeit = 286 ms TTL = 116
Antwort von xxxxx Bytes = 32 Zeit = 348 ms TTL = 116
Antwort von xxxxx Bytes = 32 Zeit = 284 ms TTL = 116
  • Dann habe ich 100% der Anzeigen nach verschoben Server 2. Führen Sie dann erneut einen Ping an den Server durch. [Ich habe den Ping für 10 Minuten gemacht und das folgende ähnliche Muster wie unten]
Antwort von xxxxx Bytes = 32 Zeit = 290 ms TTL = 116
Zeitüberschreitung der Anforderung
Antwort von xxxxx Bytes = 32 Zeit = 320 ms TTL = 116
Antwort von xxxxx Bytes = 32 Zeit = 286 ms TTL = 116
Zeitüberschreitung der Anforderung
Zeitüberschreitung der Anforderung
Antwort von xxxxx Bytes = 32 Zeit = 284 ms TTL = 116

Versuche

  1. Erhöhen MaxUserPortundTcpNumConnection
  2. Starten Sie den Server neu
  3. Erhöhen Sie IIS Max InstancesundInstance MaxRequests

Serverressource

  • Nur 10% -15% der Netzwerkverbindung werden verwendet
  • Es werden nur 10-15% der CPU verwendet
  • Nur 25% des Speichers werden verwendet
Affe D Ruffy
quelle
3
Dies ist meiner Meinung nach eine wohlgeformte Frage, die es wert ist, positiv bewertet zu werden, aber ich habe immer noch das Gefühl, dass uns einige Hinweise fehlen, die uns bei der Lösung des Rätsels helfen.
Ryan Ries
@ RyanRies, bitte geben Sie den Zeiger an, welche Informationen fehlen, um dieses Rätsel zu lösen. Im Moment habe ich 75% der Anzeigen in Server 2 und 25% der Anzeigen in Server 1. Es funktioniert jetzt ziemlich gut, aber ich kann nicht vollständig zu Server 2 wechseln.
Monkey D Ruffy
1
Ich stimme @RyanRies zu: Wir vermissen etwas. Ich würde untersuchen, wie das Adserving-System aufgebaut ist: Es kann sein, dass zwischen dem Inhalt und den Adserving-Diensten eine Abhängigkeit besteht, die die übermäßige Verzögerung verursacht.
Stephane
@Stephane nein, das sollte und würde keine verlorenen Pings verursachen. Pings werden nicht vom Adserving-Code verarbeitet, sondern direkt vom TCP-Stack. Was im Grunde bedeutet, dass sie funktionieren sollten, es sei denn, der Server ist verrückt überlastet. Dies sieht ernsthaft so aus - gemäß meiner Antwort - als ob die Bandbreite einfach nicht da wäre. Vor dem Server.
TomTom
Einige Dinge, die hier fehlen, sind 1) Was können Sie in Ihrer Umgebung ändern / nicht ändern? 2) Wie werden die Webserver auf der Festplatte konfiguriert? 3) Sind die Netzwerkzeiten intern für Ihren Standort oder handelt es sich um einen Remote-Server? Wie weit ist es entfernt, wenn es sich um einen Remote-Server handelt? 4) Wenn Sie Ihren Server verbessern müssen, wie hoch ist Ihre Budgetfreiheit, um dem Mix auf breiter Front Hardware hinzuzufügen? 5) Werden in den Ereignisprotokollen Fehler ausgegeben? 6) Ich sehe keine Ergebnisse von Perfmon-Erfassungen auf der Höhe des Verkehrs. 7) Was sind Ihre eindeutigen Besucherzahlen? 8) Haben Sie den Junk-Verkehr herausgefiltert?
Techie Joe

Antworten:

4

Nun, fangen wir an. Das ist länger.

Sie haben die Fakten hier völlig falsch eingeschätzt. Windows - selbst das veraltete 2008 R2, das Sie so schnell wie möglich aktualisieren sollten - ist vollständig in der Lage, ein Volume zu verarbeiten, mit dem mein Mobiltelefon problemlos umgehen kann.

Damit bleiben 3 mögliche Problembereiche:

  • Installation. Ihre Fahrer können beschissen sein. Wenn Sie ein veraltetes Betriebssystem verwenden - wie gut sind Ihre Treiber? Aktualisieren Sie sie - dies kann alle Arten von Problemen verursachen.

  • Netzwerk. Dies sieht ernsthaft so aus: "Mein Auto ist zu langsam, bitte helfen Sie mir, es schneller zu machen", wenn das Problem darin besteht, dass Sie die meiste Zeit im Stau verbringen und sich über den nicht bewegenden Verkehr beschweren. Kein Autotuning-Problem. 10-TB-Verkehr sagt nichts über die Überlastung des Netzwerks aus. Sehen Sie sich Ihre Netzwerkverkehrsstatistiken auf Ihrer Netzwerkkarte an und reagieren Sie entsprechend - wenn sie nicht mit der Geschwindigkeit aufgefüllt werden, die sie haben sollten ... hat Ihr Provider überverkauft. So einfach ist das.

  • Code. Möglicherweise benötigen Sie mehr RAM (der Computer ist damit beschäftigt, in den RAM zu wechseln, anstatt ihn zu verarbeiten), oder die beschissene Codierung verwendet Ihre gesamte CPU in einem Ausmaß, das dazu führt, dass der TCP-Stack auf Kernelebene nicht richtig reagiert (ja, die ICMP-Antworten sind so niedrig). Das wäre brutal - aber es ist ein weiterer Weg, dies zu überprüfen. Es könnte auch sein, dass Sie die Discs überlasten, indem Sie zu oft auf sie zugreifen, anstatt sie im RAM zwischenzuspeichern, aber ich sehe irgendwie nicht, dass dies zu verlorenen Pings führt. Ein Problem hier kann ein Administrator jedoch nicht lösen - Sie müssen Hardware darauf werfen oder einen Stock nehmen und den Programmierer damit schlagen, bis er es behebt (wenn es sich um einen "dummen" Fehler handelt, der die Leistung beeinträchtigt). Wenn dies nicht der Fall ist, ist es viel schwieriger, ernsthafte Gewinne zu erzielen, und es kann sein, dass Sie nur eine bessere Hardware benötigen.

Es erfordert definitiv keine Optimierung der Fenster - ein gut konfiguriertes Fenster kann viel mehr liefern. Meine Dateiserver ß regelmäßig über längere Zeiträume - liefern 4-6 Gigabit aus einem relativ serienmäßigen Setup.

Jetzt sagen alle Zahlen, die Sie geben, nichts Ernsthaftes.

  • 10-15% CPU wird verwendet, KÖNNTE das Austauschen bedeuten.
  • 25% Speicher werden wahrscheinlich verwendet. Dies ist ein guter Indikator dafür, dass jetzt ein Austausch stattfindet. Dies kann jedoch bedeuten, dass die CPU auf E / A wartet.
  • 10% -15% Netzwerk wird verwendet bedeutet - absolut nichts, weil es nur IHRE Seite des Netzwerks ist. Was ist mit Upstream? Was ist, wenn der Anbieter 20 Server mit 1 Gigabit auf einen 1-Gigabit-Uplink aus dem Rack setzt und das höllisch überfüllt ist?

Der letzte Punkt ist sehr wahrscheinlich - verworfene Pakete sind ein guter Indikator dafür. Und das wird für Sie nicht sichtbar sein.

Mein Rat ... schalten Sie für einen Moment alles an einer Maschine aus, machen Sie einen Geschwindigkeitstest von außen mit einer großen statischen Datei. Ich würde wetten, dass Sie weiter oben in eine Überlastung geraten.

Alles, was Sie bisher getan haben - maxuserport, tcpnumconnection, Neustart des Servers, Herumspielen mit den IIS-Einstellungen - ist völlig ausgeschaltet und tut nichts am besten. Das Schlagen eines Hammers auf ein langsames Auto repariert nie etwas - besonders wenn das Auto langsam ist, weil es im Stau steht. Ich würde alle Änderungen rückgängig machen und mit der Analyse des Problems beginnen, nicht nur Ihres Servers. Ich würde im Moment auf eine Überlastung des Netzwerks wetten.

TomTom
quelle
3
even the outdated 2008 R2 which you should update ASAP- Komm schon, TomTom, greif zu. 2008 R2 ist immer noch gut im Mainstream-Support und ein langer Weg vom Extended Support, der 2020 ist, glaube ich ...
Dan
4
"veraltetes 2008 R2, das Sie so schnell wie möglich aktualisieren sollten": Das ist sowohl falsch (2008R2 ist nicht "veraltet" und sollte nicht "nur weil" aktualisiert werden) als auch macht im Kontext der Antwort keinen Sinn. Der Rest trägt wenig zur Verbesserung Ihrer Antwort bei, da er keinen nützlichen Schritt zur Identifizierung des Problems darstellt, geschweige denn zur Behebung des Problems. Er enthält lediglich allgemeine (und nur geringfügig themenbezogene) Hinweise zur Leistung.
Stephane
Eigentlich liegt es daran, raten Sie mal, was später ernsthaft geändert wurde - der IP-Stack. Skalierbarkeit ist ein Punkt. Also ja, im gegebenen Kontext ist es. Aktualisierungen sollten so schnell wie möglich erfolgen. 2012 R2 ist besser als 2008 R2.
TomTom
Bei speedtest.net beträgt der Uplink und Downlink etwa 100 MBit / s.
Monkey D Ruffy
Es gibt zwei Abhängigkeitssoftware für das Anzeigensystem: memcached und MySQL. Es verfolgt den gesamten Eindruck und klickt in den Memcached und aktualisiert alle 10 Minuten auf MySQL.
Monkey D Ruffy
0

Befinden sich die Pings außerhalb der beiden Server? Wenn ja, versuchen Sie den Ping von Server eins zu Server zwei. Wenn sich die Ergebnisse völlig von denen beim externen Pingen unterscheiden, zeigt dies, dass das Problem möglicherweise nicht auf Server zwei zurückzuführen ist. Überprüfen Sie im Ressourcenmonitor auch die Länge der Festplattenwarteschlange für die Laufwerke und die aktive Zeit - weitere Informationen, die möglicherweise auf ein Problem hinweisen.

Ross Buggins
quelle
Das habe ich schon versucht. Ich habe Server 1 verwendet, um Server 2 zu pingen, und der Ping wird immer noch gelöscht, wenn ich mehr Anzeigen platziere.
Monkey D Ruffy
1
Die Verbindung zwischen Server 1 und Server 2 erfolgt über Ihre eigene Hardware? Oder ist es der Rechenzentrumsschalter? Ich versuche nur festzustellen, ob Sie beim Pingen DC-Hardware durchlaufen haben, die möglicherweise zu einer Überlastung geführt hat. Haben Sie etwas in IIS / Windows, das Anforderungen dynamisch blockiert? Kein Dos-Schutz, der legitime Anfragen blockiert? Das System ist ASP.NET und die Datenbank ist MySQL?
Ross Buggins