Wie oft sollte ich Linux-Server neu starten?

30

Ich habe viele Linux-Server (SUSE 9 und 10), die zum Ausführen von Webdiensten verwendet werden, die Daten für große Rechengitter bereitstellen. Vor kurzem hatten wir einige schwer zu erklärende Ausfälle (dh Hardware- und Softwareprotokolle weisen keine offensichtlichen Fehler auf) und wir beginnen uns zu fragen, ob die lange Betriebszeit (normalerweise 200-300 Tage) das Problem ist. Sollte ich angesichts der hohen Auslastung dieser Server einen regelmäßigen Neustart in Betracht ziehen?

John Channing
quelle

Antworten:

47

Sie müssen nach einem Kernel-Update neu starten (es sei denn, Sie verwenden KSplice), alles andere ist optional. Persönlich starte ich während eines Wartungsfensters monatlich neu, um sicherzustellen, dass der Server und alle Dienste wie erwartet wieder verfügbar sind. Auf diese Weise kann ich ziemlich sicher sein, dass das System nach einem Neustart außerhalb des Zeitplans (dh einem kritischen Kernel-Update) wieder ordnungsgemäß hochgefahren wird. Die automatisierte Überwachung von Servern und Diensten (z. B. Nagios) trägt ebenfalls erheblich dazu bei, diesen Prozess zu unterstützen (Neustart, rote Ampeln und hoffentlich wieder grüne Ampeln).

PS: Wenn Sie regelmäßig neu starten, sollten Sie sicherstellen, dass Sie Ihre fsck-Überprüfungen optimieren (dh die maximale Anzahl der Ladevorgänge zwischen den Überprüfungen sollte angemessen sein). Andernfalls kann ein schneller Neustart von 2 Minuten 30 Minuten dauern, wenn der Server ein paar Terabyte Daten überprüft. Normalerweise setze ich meinen Mount-Zähler auf 0 (tune2fs -c 0) und das Intervall zwischen Überprüfungen auf ungefähr 6 Monate und erzwinge dann von Zeit zu Zeit manuell einen fsck und setze den Zähler zurück.

Kurt
quelle
1
Sie regelmäßig Ihre DRBCP Prüfung ist ein Muss, und diese Art der Überprüfung ist ein großer Start in dieser Richtung.
Scott Pack
Nach dem Kernel-Update muss kein Neustart durchgeführt werden - ksplice.com
raspi 04.09.10
1
KSplice ist korrekt, mit KSplice können Sie Patches ausführen (Kernel, Datenbank usw.). Da Oracle jedoch KSplice gekauft hat, ist dies wahrscheinlich keine Lösung für alle, die keine Oracle-Produkte verwenden (die kürzlich KSplice gekauft haben).
Kurt
11

Ich starte meine Server regelmäßig neu, wenn größere Konfigurationsänderungen vorgenommen werden. Es ist wichtig zu wissen, dass die Serversoftware im Notfall problemlos verfügbar ist. Das Letzte, was Sie möchten, ist, sich in einer Position zu befinden, in der Sie versuchen, sich von einem Ausfall zu erholen, sich aber mit Ihrer Serverkonfiguration herumschlagen müssen, weil Sie diese beim Einrichten nicht gründlich getestet haben.

Kamil Kisiel
quelle
6

Linux-Server müssen nie neu gestartet werden, es sei denn, Sie müssen die aktuelle Kernel-Version unbedingt ändern. Die meisten Probleme können gelöst werden, indem Sie eine Konfigurationsdatei ändern und einen Dienst mit einem Init-Skript neu starten.

Sie müssen auf Neustarts achten ... Wenn Sie Änderungen "on the fly" vorgenommen haben, ohne Ihre Änderungen in der Konfigurationsdatei eines Dienstes zu berücksichtigen, werden diese Änderungen nach einem Neustart nicht übernommen.

Normalerweise starte ich nach geplanten Systemaktualisierungen neu. Es ist im Allgemeinen nicht notwendig, aber ich mache sie, wenn niemand im Büro ist. Warum also nicht? Es gibt sowieso oft Kernel-Upgrades, wenn ich mit dem Update anfange.

Brad Beyenhof
quelle
Natürlich müssen sie von Zeit zu Zeit neu starten. Wenn Sie Software aktualisieren und diese bestimmte Software gerade ausgeführt wird, verwenden Sie weiterhin die alte Version der Software, da die Kopie der alten Version noch im RAM aktiv ist. Sie müssen diese Software neu starten (durch Neustart des Dienstes oder Neustart), damit das Update wirksam wird. Einige Anwendungen müssen neu
gestartet werden
1
@ JonasDralle, Dienste sollten automatisch beendet und neu gestartet werden, wenn sie aktualisiert werden. Ansonsten ist es ein Fehler bei der Implementierung dieses Dienstes!
Alexis Wilke
4

Nicht unbedingt erforderlich, die Handhabung des Linux-Speichers ist ausgezeichnet. Wenn Sie jedoch über so lange Betriebszeiten verfügen, führen Sie wahrscheinlich Kernel mit bekannten Schwachstellen aus. Vielleicht möchten Sie dies beobachten.

Peter
quelle
3
Linux kann mit seinem Speicher gut umgehen, aber einzelne Anwendungen möglicherweise nicht - ihre Heaps könnten fragmentiert werden, wenn sie für längere Zeit ausgeführt werden. Natürlich leiden Dinge wie Prefork Apache (das seine Prozesse recycelt) im Allgemeinen nicht darunter. Andere Dinge, die einen einzigen sehr langlebigen Prozess verwenden (zB mysql), können. Hängt von Ihrer Anwendung ab.
MarkR
4

Ich denke, Sie sollten neu starten, wenn es ein neues Kernel-Update ODER ein libc-Update gegeben hat. Viele Dinge hängen mit libc zusammen und es ist nicht wirklich möglich, diese lib vollständig aus dem Speicher zu entladen und durch die neue Version zu ersetzen, es sei denn, Sie führen einen Neustart durch.

Beispielsweise verwenden selbst grundlegende Dinge wie / bin / ls und andere Dinge in / bin libc. Wenn Sie nur eine Konsole ausführen und bash verwenden, verwenden Sie libc.

$ ldd /bin/bash
        linux-gate.so.1 =>  (0xffffe000)
        libtermcap.so.2 => /lib/libtermcap.so.2 (0xb8029000)
        libdl.so.2 => /lib/libdl.so.2 (0xb8025000)
        libc.so.6 => /lib/libc.so.6 (0xb7ed9000)
        /lib/ld-linux.so.2 (0xb804b000)

$ ldd /bin/ls
        linux-gate.so.1 =>  (0xffffe000)
        librt.so.1 => /lib/librt.so.1 (0xb7f3a000)
        libacl.so.1 => /lib/libacl.so.1 (0xb7f33000)
        libc.so.6 => /lib/libc.so.6 (0xb7de7000)
        libpthread.so.0 => /lib/libpthread.so.0 (0xb7dd0000)
        /lib/ld-linux.so.2 (0xb7f61000)
        libattr.so.1 => /lib/libattr.so.1 (0xb7dcc000)

Und ja, wenn Sie Dateien in /etc/init.d ändern, die sich auf den Start auswirken, würde ich einen Neustart empfehlen. Sie möchten nicht herausfinden, dass Sie einen kleinen Fehler in einer Startdatei gemacht haben, wenn Sie schnell wieder einsatzbereit sein müssen.

Wenn ein Server viele Tage ohne Neustart vergangen ist, bedeutet dies, dass es keine Möglichkeit gibt, sicherzustellen, dass er wieder ordnungsgemäß hochgefahren wird. Dies liegt wiederum daran, dass möglicherweise viele Konfigurationsdateien darauf geändert wurden und es lange Zeit von niemandem neu gestartet wurde, um sicherzustellen, dass es angezeigt wird. Wenn auf dem Server viele Aktualisierungen fällig sind und Sie lange nicht neu gestartet haben, starten Sie den Server neu, bevor Sie die Aktualisierungen anwenden. Andernfalls können Sie bei einem Problem nicht sicher sein, ob es durch einen Konfigurationsfehler verursacht wurde. A vor langer Zeit oder die neuen Updates, die Sie angewendet haben.

Wenn Sie einen kritischen Server nach einer sehr langen Zeit neu starten, kann es sein, dass Sie mit dem fsck sehr lange warten müssen, bis er wieder hochgefahren ist. Sie können tune2fs verwenden, um dies zu vermeiden, aber ich nehme an, es ist eine gute Idee, dies regelmäßig zu überprüfen. Aus diesem Grund sollten Sie nicht in der Lage sein, von nur einem Server abhängig zu sein, und wenn dies der Fall ist, ist Ihre gesamte Website verschwunden. Sie sollten einen anderen im Standby-Modus haben.

afa
quelle
3
+1 für "Neustart vor"
Kubanczyk
2

Eine andere Sache, nach der Sie suchen müssen, während Sie diese unerwartete Ausfallzeit haben, ist zu prüfen, wie genau der Speicher und der Prozessor verwendet werden und von welchen Programmen. topsollten in der Lage sein, zu bestimmen, welche Prozesse für den Verlust von Ressourcen verantwortlich sind, und diese dann direkt verwalten können. Eine andere Idee wäre, einen Cronjob zu initialisieren, um Ihre Prozesse nach einem bestimmten Zeitplan herunterzufahren und neu zu starten.

Bobby
quelle
+1 - Nicht alle Ausfälle werden durch ein Kernelproblem verursacht.
pcapademic
2

Es ist keine schlechte Idee, einen Neustart durchzuführen, wenn der Vorgang so lange gedauert hat, damit Sie eine Festplattenprüfung (fsck) für die Root-Partition durchführen können. Ihr Argument kann sein, dass dies zur Gewährleistung der Datenintegrität beiträgt.

Kyle Brandt
quelle
1

Ein ordnungsgemäß ausgeführter Linux-Server sollte nur für Kernel-Updates neu gestartet werden müssen. Das kann man bei manchen Programmen nicht immer sagen - zum Beispiel muss ich manchmal Apache2 oder Mailman neu starten.

Paul Tomblin
quelle
0

Meine Infrastruktur verfügt über zwei Datenstandorte, den Alpha-Standort (an dem täglich Vorgänge ausgeführt werden) und den Beta-Standort (den Sicherungsstandort, falls bei Alpha schreckliche Probleme auftreten sollten). Obwohl dies derzeit nicht der Fall ist, dränge ich darauf, alle 6 Monate eine geplante Ausfallzeit am Alpha-Standort zu haben, damit wir alle Dienste von der Beta aus ausführen können.

Dies wird zwei Dinge erreichen. Erstens wird sich herausstellen, dass unsere Website zur Wiederherstellung nach einem Katastrophenfall vollständig funktionsfähig ist. Zweitens habe ich eine Woche Zeit, um die bei alpha angesammelte Kruft zu entfernen.

So wie es ist, starte ich meine Server nicht so oft neu, wie ich sollte. Ich stimme den anderen Postern zu, die sagten, dass es wichtig ist zu wissen, dass Ihre Server wieder hochgefahren werden, wenn Sie sie brauchen. Sie wollen nicht "glauben", dass sie es tun, sondern nur herausfinden, dass Sie etwas geändert und nicht richtig gemacht oder nicht dokumentiert haben.

Matt Simmons
quelle
0

Sie können auch einige Skripte schreiben, die (soweit möglich) prüfen, ob der aktuelle Status Ihres Computers der Status des Computers nach dem Neustart ist.

Was ich damit meine ist ...

  • /etc/init.d/*
    • Stellen Sie sicher, dass alle Dienste, die derzeit ausgeführt werden, für den Start beim Systemstart markiert sind
    • Stellen Sie sicher, dass alle Dienste, die nicht ausgeführt werden, so gekennzeichnet sind, dass sie beim Booten nicht gestartet werden
  • /etc/fstab
    • Überprüfen Sie, ob alle gemounteten Dateisysteme (dh /etc/mtab) einen entsprechenden Eintrag in haben/etc/fstab
    • Vergewissern Sie sich, dass alle Dateisysteme, die beim Booten aktiviert werden sollen, ebenfalls aktiviert /etc/fstabsind.

Dies ist natürlich keine vollständige Überprüfung, verringert jedoch das Risiko von Problemen nach dem Neustart.

Zusätzlich dazu sollten Sie (imo) eine Richtlinie für Serverpaket-Updates festlegen, in einer sinnvollen Reihenfolge, beispielsweise 1 Gruppe pro Woche ...

  • Crash & Burn-Server
  • Entwicklungsserver, Trainingsserver
  • Server testen
  • Pre-Production Server
  • Produktionsserver

Erstellen Sie außerdem einen Gesamtplan, z. B. "Alle Server werden alle 6 Monate ein vollständiges Betriebssystem-Upgrade durchlaufen".

Xerxes
quelle
0

Hängt von den auf dem Server ausgeführten Aufgaben ab. Bei einigen virtuellen Servern verwenden wir häufig einen Neustart anstelle von "apachectl" und es dauert nur 5-10 Sekunden länger. Einige stark ausgelastete Maschinen werden jedoch mehrmals im Jahr neu gestartet, wobei eine ganze Administratorteam den Prozess überwacht.

Disserman
quelle