Ich frage mich, ob ein Neustart eines Servers in einem Zeitplan für die Leistung eine gute Idee wäre.
Angenommen, wir möchten den Server alle zwei Nächte um 02:00 Uhr neu starten.
Der Server hier ist Windows Server 2008 R2
. Hauptsächlich laufen SQL Server und IIS 7.5 (fast 15 Apps laufen) unter diesem Server. Server hat 4 GB Speicher.
Antworten:
Obwohl ich der Meinung bin, dass beim Neustarten der Box per se nichts falsch ist, würde ich Ihnen aufgrund Ihres Kommentars, dass der SQL Server-Agent stoppt, eine zusätzliche Analyse der Grundursache empfehlen. Dienste werden in der Regel nicht einfach beendet, und die SQL Server-Agentendienste haben sich nach meiner Erfahrung in der Regel nicht so verhalten.
Abgesehen von einem Neustart sollten Sie die Ereignisprotokolle überprüfen und ein Langzeit-Leistungsindikatorprotokoll erstellen, das Sie mit der Leistungsanalyse von Protokollen (PAL) analysieren können, um festzustellen , ob ein Fehler vorliegt. Sie sollten nicht zuletzt versuchen, die Ereignisse, die mit dem Beenden des SQL-Agenten zusammenhängen, mit anderen Faktoren zu korrelieren.
quelle
Wenn Sie versuchen, den Computer neu zu starten, um die Leistung zu verbessern, bedeutet dies möglicherweise, dass Probleme mit der Speicherverwaltung auftreten.
Caching ist gut
Wenn überhaupt, würde das Neustarten von Servern die Leistung (und natürlich die Betriebszeit) in einer idealeren Umgebung beeinträchtigen . Eine der Grundvoraussetzungen für die Leistung beim Computing besteht darin, die Vorteile des Caching zu nutzen (Daten im schnellen Speicher verfügbar zu haben). Bei jedem Neustart wird der Cache aufgebraucht. Dies gilt sowohl für SQL Server als auch für IIS. Obwohl Sie möglicherweise nicht über die ideale Umgebung verfügen, sollten Sie anhand der folgenden Informationen eine bessere Option finden, als den Server nach einem Zeitplan neu zu starten.
IIS-Speicherlecks?
Nun haben Sie erwähnt, dass dies IIS 7.5 ist. Obwohl ich es bedrückend finde, weisen so viele Web-Apps, die auf IIS 7.5 ausgeführt werden, Speicherverluste auf, dass die Standardeinstellung in IIS darin besteht, die APP alle X Minuten neu zu starten und sie herunterzufahren, wenn ein APP-Pool inaktiv ist. Das Ideal ist, die Speicherverluste zu beheben. Wenn dies nicht möglich ist, können Sie diese Einstellungen anpassen , einschließlich Speicherbeschränkungen und Timer. Sie können perfmon verwenden, um herauszufinden, welcher w3wp-Prozess den Speicher verwendet. Es ist ein bisschen schmerzhaft, aber Sie können es mit dem App-Pool zurückbinden
%systemroot%\system32\inetsrv\APPCMD list wps
.SQL-Speicher
Zurück zum Zwischenspeichern nimmt SQL den verfügbaren Speicherplatz in Anspruch. Sie können dies in den Eigenschaften für SQL Server einschränken. Wenn Sie den Speicher nicht einschränken und auch IIS auf der Box ausführen, kann dies zu einem Kampf um die Leistung führen, bei der der Speicher zerstört wird. In diesem ausgezeichneten Artikel wird ausführlich darauf eingegangen : Ein Sysadmin-Handbuch zum Microsoft SQL-Speicher .
Balance
Da sich sowohl IIS als auch SQL auf demselben Computer befinden, müssen Sie die Speichernutzung ausgleichen. Wenn Sie dies nicht tun, erhalten Sie möglicherweise Speicher, der wahrscheinlich erneut auf die Festplatte ausgelagert wird. Dies ist ein schrecklicher Ort (es sollten Leistungsindikatoren für die Auslagerungsaktivität vorhanden sein). Mithilfe der Einstellungen für IIS-Recycling und der SQL-Speicherbeschränkungen sollten Sie in der Lage sein, dieses System stabil zu machen. Um dies auszugleichen, benötigen Sie möglicherweise mehr Speicher als 4 GB. Wenn dies eine Option ist, würde ich dringend empfehlen, SQL Server auf einem dedizierten Computer zu installieren. Dadurch wird die Leistung erheblich verbessert und die Dinge erheblich vereinfacht.
quelle
Ich bin kein Befürworter eines geplanten Neustarts von Servern, insbesondere nicht, um ein zugrunde liegendes Problem zu lösen. Wenn Sie diesen Server neu starten müssen, um ein Leistungsproblem zu beheben, sollten Sie die Ursache des Problems ermitteln und beheben. Durch einen regelmäßigen Neustart des Servers wird nur das zugrunde liegende Problem verschleiert.
quelle
Wenn Sie erhebliche Speicherverluste haben, warum nicht? Andernfalls sollten Sie den Computer monatlich mit Updates neu starten.
quelle
Wenn Sie den Server wirklich nach einem Zeitplan neu starten möchten (aufgrund der oben genannten Speicherverluste oder -aktualisierungen oder aus einem anderen Grund), sollten Sie sich eine Clusterlösung ansehen. Stellen Sie einen anderen Server parallel auf, schließen Sie ihn an einen Load Balancer an (selbst ein einfacher würde dies tun), und Sie können ihn so oft neu starten, wie Sie möchten, ohne die Betriebszeit des Dienstes zu verlieren oder zu befürchten, dass der Server überhaupt nicht startet Du wirst raus sein.
quelle
Es ist keine schreckliche Idee, aber wenn es nur "Voodoo" ist, wird es Ihnen wahrscheinlich nicht viel helfen.
Es gibt jedoch zwei Gründe, die dafür sprechen, dass dies nicht das Ende Ihrer Untersuchung zur Verbesserung Ihrer Leistung ist.
Eines ist die zukünftige Skalierbarkeit. Wenn Ihre Ausfälle das Ergebnis von Auslastung, einer bestimmten Anzahl von Abfragen, einer bestimmten Abfrage, die auf einen Caching-, Abfragekompilierungs- oder Btree-Indexierungsfehler trifft, oder anderen Problemen sind, die derzeit täglich auftreten, treten sie wahrscheinlich häufiger als Auslastung auf nimmt mit der Zeit zu. Nipp das in der Knospe.
Das andere Problem ist, dass Sie vermutlich eingehende Anforderungen von abhängigen Diensten während Ihres Neustarts stoppen müssen. Sie haben gerade eine betriebsbereite Trittfrequenz erstellt. Jedes Mal, wenn eine tägliche Aufgabe ausgeführt werden muss, ist sie an Ihren Neustart gebunden. Irgendwann werden Sie diese massiven Neustarts haben, die sechs Stunden dauern (ich übertreibe hier nicht, ich habe es bei mehr als einer Firma gesehen) und niemand wird sich daran erinnern, warum in der Mitte alles gestoppt und neu gestartet werden muss der Nacht.
Meine Empfehlung wäre, den SQL-Prozess zu überwachen und nach Bedarf neu zu starten. Wie in einem früheren Poster erwähnt, hat SQL nicht das Gedächtnisleck, das die Leute glauben (und ich sage dies als Person, die Mitte der 90er Jahre im MSSQL-Team war). Sie möchten, dass Ihr Datenbankserver fast 100% Arbeitsspeicher und CPU nutzt. Alles andere verschwendet Ressourcen.
quelle
Wenn Sie schlecht geschriebenen Code und Speicherlecks haben, ist ein Neustart möglicherweise die einzige Möglichkeit, den zugewiesenen Speicher wieder in den Pool zurückzuführen. Wenn Sie speichergebundene Prozesse haben, kann diese Aktualisierung des Pools auf einen sauberen Zustand die Leistung für eine Weile verbessern. Aber dies ist wirklich ein schlechter Weg, um mit Leistungsproblemen umzugehen. Die eigentliche Ursache sollte ausgemerzt und behoben werden.
Andernfalls lassen Sie es laufen, bis Sie ein Wartungsfenster zum Anwenden von Patches / Anwendungen / Wiederherstellen von Daten benötigen. Dies könnte ein guter Zeitpunkt sein, um einem Leistungstechniker vorzuschlagen, sich die fraglichen Server genau anzusehen, warum / welche Probleme dies zwingen.
quelle
Während keine vollständige Antwort per se , aber ist es eine praktikable Option, dem Server etwas mehr RAM hinzuzufügen? 4 GB sind für einen IIS / SQL Server-Computer ein bisschen zu niedrig. Je nachdem, ob es sich um eine dedizierte Servereinheit oder einen Desktop handelt, der in Betrieb genommen wurde, können Sie 8 GB oder mehr für relativ niedrige Kosten erwerben. Zugegeben, wenn es sich um einen Server handelt, kostet dieser möglicherweise etwas mehr als normales Desktop-RAM, aber zwischen erzwungenen Neustarts bleibt etwas mehr Zeit.
Prüfen Sie, ob Sie SQL Server auf die Verwendung von maximal 80% des Arbeitsspeichers beschränken können, oder überprüfen Sie die Protokolle, um genau zu ermitteln, was falsch läuft und / oder warum der Dienst beendet wird.
quelle
Unabhängig von dem SQL-Problem, mit dem Sie möglicherweise zu tun haben, wenn Sie Windows-Server haben und eine Patch-Routine ausführen, werden Sie die Server regelmäßig neu starten, ohne "nur weil" neu starten zu müssen. Als ich für "BIG MULTINATIONAL" gearbeitet habe, mussten wir monatlich patchen. Daher wurden alle unsere Server mindestens einmal monatlich neu gestartet.
quelle
Ich mache das auf 3 Servern, 1 ist unser und 2 Kunden. Ich habe es aus verschiedenen Gründen geregelt - auf einem Server 2008R1 stehen viele Aktualisierungen zur Installation an, aber ich kann sie nicht im Batch installieren, daher installiere ich sie jeden Tag einzeln. ein anderer Server 2012R2 - für die Fehlerbehebung beim Booten und einige Leistungsprobleme usw. Ich halte es nicht für eine schlechte Praxis, einen regelmäßigen Neustart von der anderen Festplatte aus zu planen. Es kann dabei helfen, verschiedene Hardware- und Softwareprobleme zu verfolgen, insbesondere solche, die am automatischen Start beteiligt sind .
quelle
Ich kenne eine große Firma, die nicht nur ihre Windows-Server jede Nacht neu startet, sondern einige sogar alle 24 Stunden neu installiert. Für sie ist es aufgrund von Speicherproblemen in der Software und Sicherheitsproblemen notwendig.
Scheint, dass einige Unternehmen alle 24 Stunden neu starten - obwohl es mir als Linux-Administrator seltsam vorkommt. Um es klar zu machen: Ich würde niemals empfehlen, dies wegen eines Speicherproblems zu tun - spüren Sie das Problem auf und lösen Sie es.
Wenn Ihre Speichernutzung monatelang bei 75% bleibt, ist möglicherweise kein Neustart erforderlich - es ist völlig normal, dass eine Serveranwendung den gesamten verfügbaren Speicher verwendet -, was die Leistung erheblich steigert, da Sie weniger Festplatten-E / A benötigen, wenn Sie sie verwenden der RAM, um Ihre Daten zwischenzuspeichern.
quelle