Warum sind Websites (auch diese) manchmal wegen Wartungsarbeiten inaktiv?

36

Das habe ich persönlich noch nie gemacht. Ich verstehe nicht, warum es so viele Standorte gibt. Wenn Sie Ihre Entwicklung auf einem Entwicklungsserver durchführen, warum müssen Sie dann jemals Ihren Produktionsstandort herunterfahren?

Darüber habe ich mich immer gewundert.

Was machen sie in dieser Zeit, was erfordert das?

JD Isaacks
quelle
56
Sie ersetzen die Vakuumröhren in den Servern.
Mipadi
11
Ich dachte, sie stapeln die Lochkarten.
Christopher Mahan
5
Denken Sie daran, dass die Site wahrscheinlich für die meisten Updates verfügbar bleibt . Offensichtlich sehen Sie nur diejenigen , wo es tatsächlich benötigt für eine Weile kommen offline.
Dean Harding
4
Niemand sprach einen Sicherheitsgrund an; Möglicherweise gibt es einen bekannten Exploit (auch bekannt als jemand, der veröffentlicht wurde, wie man bestimmte Websites ausnutzt), und die Administratoren schalten ihn offline, um Missbrauch von anderen Parteien während der Fehlerbehebung zu verhindern.
Francisco Presencia
1
Ich werde gefragt, mit welchen Strategien ich in einer datenbankgestützten Webanwendung keine (geplanten) Ausfallzeiten erzielen kann. Insbesondere Upgrades, bei denen Änderungen
Stephen,

Antworten:

59

Ein großer Kicker für alles mit großem Umfang ist, dass, wenn man Datenbankschemata auf irgendeine Weise ändert, normalerweise einige große, unangenehme Wartungsskripte ausgeführt werden müssen.

Nun kann es ungefähr eine Sekunde dauern, bis diese mit Ihrem Entwicklungs-Dataset ausgeführt werden. Wenn Sie jedoch mit dem Messen von Daten in Terabyte und Petabyte beginnen, kann das Hinzufügen einer einzelnen Spalte zu einer Tabelle Stunden dauern.

Unabhängig davon, wie schnell und automatisiert die Bereitstellung ist, müssen Sie immer noch Probleme mit der Datenpflege bewältigen. Wenn Sie wirklich gut planen, können Sie während des Vorgangs einen schreibgeschützten Spiegel der Site erstellen, aber für viele Sites ist schreibgeschützt sinnlos und daher die Mühe nicht wert.

Wyatt Barnett
quelle
3
+1 - ein Nur-Lese-Stapel-Überlauf wäre nicht sehr gut. Es wird nicht viel geben, was du auf Google nicht finden
könntest
10
@glowcoder: Wenn Sie bei Google suchen, finden Sie SO Antworten.
Donal Fellows
@Donal das war genau mein Punkt.
corsiKa
1
Google ist riesig und verfügt mit Sicherheit über eine riesige Datenbank. wie kommt es, dass ich für google nie "down for maintenance" sehe? (Google.com-Startseite)
alexyorke
7
@ alexy13 - google ist in einer speziellen Kategorie von Maßstäben, in denen es keine einzige Datenbank oder kein einziges Rechenzentrum gibt. Teile des Systems sind immer ausgefallen und sie haben das Front-End dafür geschrieben. Ich würde auch, wenn Sie mir diese Art von Zeit und F & E-Budget geben würden.
Wyatt Barnett
7

Es gibt eine Reihe von Gründen, warum Sie eine Site zur Wartung deaktivieren möchten. Um ein paar zu nennen:

  • Datenbankänderungen
  • DAL ändert sich
  • Aktualisieren von Diensten

Grundsätzlich gilt: Wenn Ihre Site nicht statisch ist, möchten Sie sie bei einer Logikaktualisierung deaktivieren, da andernfalls möglicherweise Fehler oder unerwartetes Verhalten bei Personen auftreten, die auf Ihre Site zugreifen.

Wenn Sie die Datei "web.config" (in ASP.NET) für Ihre Site berühren, sollten Sie sie zunächst für Wartungszwecke herunterfahren, da die Sitzung für Benutzer sonst inaktiv wird. Wenn sie sich also in der Mitte von etwas befänden, wäre es verloren.

Tyanna
quelle
2
Die Sitzung geht verloren, wenn der Sitzungsstatus "In Bearbeitung" verwendet wird. Wenn Sie den Sitzungsstatus "Außerhalb des Prozesses" verwenden, geht die Sitzung nicht verloren, wenn die Datei "web.config" geändert wird.
Anthony
2
Der letzte Punkt ist nur wahr, wenn Sie In-Process-Sessions durchführen, von denen ich hoffe, dass Sie nicht in einer Produktionsstätte sind! Es gibt mehr als nur das Berühren der web.config, die den Worker-Prozess zum Erliegen bringt.
Dean Harding
7

Nun, das ist eine irgendwie abstrakte Frage - ich habe sogar Sites gesehen, die "Down for Maintenance" anstelle von HTTP 500 verwendeten.

Für Websites müssen Sie manchmal ein Upgrade durchführen. Wenn Sie beispielsweise die Datenbank ändern, soll während dieser Zeit kein anderer Benutzer die Datenbank berühren. Wenn die Datenbank offline ist, muss die Site ebenfalls ordnungsgemäß deaktiviert werden, da das Anzeigen von SqlException nicht sehr hilfreich ist. Ein weiterer Grund ist ein Hardwarefehler oder ein Systemfehler (z. B. ein Verlust von Ressourcen), der einen Neustart der Anwendung oder sogar des Systems erfordert.

Einmal war ich an der Modernisierung des Internetbankings in einer der größten Banken meines Landes beteiligt. Der gesamte Prozess des Upgrades von Websites, Middle Tier und Datenbanken dauerte drei Tage, in denen das System für Kunden offline war. Es beinhaltete auch eine vollständige Sicherung von allem, so dass im Falle eines Ausfalls das System auf die alte Version zurückgesetzt werden konnte.

Ladislav Mrnka
quelle
2
Ist HTTP 503 (statt 500) nicht der richtige Statuscode für "Wartungsbedürftig"?
Nubok
4

Server benötigen Patches, um ausgeführt zu werden, und auf vielen Betriebssystemen müssen diese Patches neu gestartet werden. Das ist also eine Kategorie von Ausfallzeiten. Viele Unternehmen planen Neustarts von Patches für Zeiten mit geringer Nutzung, z. B. Sonntagmorgen. Wenn keine Patches vorhanden sind, werden die Server trotzdem zur regulären Wartungszeit neu gestartet (dies ist ein Kater seit den NT4-Tagen, als bestimmte Zähler alle anderthalb Wochen überliefen, sodass ein wöchentlicher Neustart andere Fehler verhinderte).

Ein Unternehmen, für das ich gearbeitet habe, hatte Ende der 90er Jahre eine E-Commerce-Website, die monatlich mehr als 1.000.000 US-Dollar Umsatz einbrachte. Jemand hat die falsche Steuertabelle auf den Produktionsdatenbankserver hochgestuft. Die Heilung bestand darin, den Datenbankserver aus der Sicherung wiederherzustellen und die Transaktionen seit der letzten Sicherung anzuwenden. Dies dauerte mehrere Stunden, in denen die Website nicht verfügbar war, um Bestellungen entgegenzunehmen. Da sich der Bestellteil und die statischen Verkaufsbroschüren auf derselben Site befanden und untrennbar miteinander verbunden waren, mussten beide fallen.

Bei einer Firma, für die ich gearbeitet habe, wurde falscher Text an der falschen Stelle eingefügt, und der CEO schaltete sich aus und ließ die Website "wegen Wartungsarbeiten" vom Netz nehmen, während Layout und Text "repariert" und das entsprechende Opfer beschuldigt und gefeuert wurden.

Tangurena
quelle
Sogar dies kann mit einem korrekten Lastausgleich gemildert werden
Voycey
4

Während andere Antworten korrekt sind, können Sie mit den richtigen Architekturen Ausfallzeiten fast immer vermeiden. Aber das hat Kosten, und diese Kosten sind es möglicherweise nicht wert: Eine Stunde Ausfallzeit kostet Amazon oder die Infrastruktur hinter NASDAQ sehr viel. Paketüberfluss ? Höchstwahrscheinlich nicht so sehr.

So vermeiden Sie Ausfallzeiten:

  • Herunterfahren von Hardware-Serving-Seiten: Wenn Sie Proxys vor Ihrer Website haben, können Sie diese stattdessen offline schalten, ohne den Benutzer zu beeinträchtigen
  • Neukonfiguration von Servern: wie oben
  • Aktualisieren / Ändern von Daten in Datenbanken: Sie können Ihre Website in den schreibgeschützten Modus versetzen, usw.

In einer geschichteten Architektur ist es im Allgemeinen umso schwieriger, Ausfallzeiten zu vermeiden, je näher Sie der "Spitze" sind (Webserver vs. Datenbank).

David Cournapeau
quelle
4
Verfügt die NASDAQ nicht über eine geplante Ausfallzeit von 14 Stunden pro Tag?
Peter Taylor
3

Eine Site kann regelmäßige Ausfallzeiten planen, auch wenn bei jeder geplanten Ausfallzeit nichts zu tun ist. Auf diese Weise werden die Benutzer an die Vorstellung gewöhnt, dass die Website von Zeit zu Zeit nicht erreichbar ist, sodass sich die Benutzer nicht so sehr beschweren müssen , wenn die Arbeit erledigt werden muss.

Barry Brown
quelle
Dafür gibt es eine Heilung: Bringen Sie das Beschwerdesystem während der Ausfallzeit zum Erliegen :) Ich habe tatsächlich gesehen, wie Unternehmen das getan haben. Ein gutes Beispiel dafür ist ein MMO-Unternehmen, das die Website mit der Ankündigung der Ausfallzeiten sowie die Support-Foren herunterfährt und das Spiel wegen Wartungsarbeiten nicht verfügbar ist. Jeder, der die Ankündigung in den wenigen Stunden vor der Wartung nicht verstanden hatte, würde nie wissen, was los war.
Jwenting
3

Dies hat auch eine psychologische und marketingtechnische Seite. In einigen Fällen (ich wage es zu sagen, die meisten Fälle, aber ich bin nicht so kühn * g *) kann die Angabe "Zur Wartung ausgefallen" auch bedeuten "Der Server ist abgestürzt oder aus einem anderen Grund außer Betrieb".

Ich habe das ziemlich oft gesehen. Normalerweise möchten Sie als Entwickler eine "echte" Fehlermeldung erhalten, die so etwas wie "Whoops, wir haben gerade eine große Last und nicht alle Anfragen können bearbeitet werden" Sagen Sie dem Kunden, dass wir ein Problem haben. Sagen Sie ihm, dass wir eine geplante Wartung haben - das wird viel besser aussehen. "

"Wartungsbedürftig" ist daher oft nur eine andere Bezeichnung für "außer Betrieb".

perdian
quelle
2

Kein Server MUSS wegen Wartungsarbeiten ausfallen. Sie können dies für alles, egal in welchem ​​Umfang, für Datenbankänderungen, Serverupdates usw. vermeiden.

Das Problem ist, dass die Erstellung und Wartung eines Systems ohne Ausfallzeiten in einem bestimmten Umfang sehr kostspielig ist. Sie benötigen Redundanz überall, Lastausgleich überall, Datenreplikation, Synchronisation. Das sind schwere Probleme.

Grundsätzlich müssen Sie in der Lage sein, den Netflix Chaos Monkey in prod freizugeben, um sicherzustellen, dass er auch dann funktioniert, wenn ein Teil Ihres Systems mit dem Update beschäftigt ist oder einfach nicht mehr synchron ist. Das ist sicherlich machbar. Es ist auch sehr teuer, erfordert viel Zeit und viele Experten, um an dem Problem zu arbeiten.

Das Aktivieren des Wartungsmodus für eine Site kann ein Mittelweg sein, den Sie wählen, da Sie nicht so viel investieren möchten, um zu vermeiden, dass Ihre Site gelegentlich für kurze Zeit heruntergefahren wird.

Wirtschaft.

Wenn Sie sich jedoch für eine Ausfallzeit entscheiden, wird Ihre Site nicht nur verfügbar, sondern auch zuverlässiger, da diese bewährten Methoden beiden Zwecken dienen.

e-satis
quelle
0

Ich verstehe nicht, warum es so viele Standorte gibt. Wenn Sie Ihre Entwicklung auf einem Entwicklungsserver durchführen, warum müssen Sie dann jemals Ihren Produktionsstandort herunterfahren?

Scheiße passiert. Es sei denn, Sie führen eine Art mathematische Überprüfung Ihrer Ergebnisse durch ( und Ihre Spezifikationen sind gültig ), egal wie vorsichtig Sie sind, es passiert Scheiße.

Es kann auch vorkommen, dass Sie Änderungen an einem wichtigen Teil Ihrer Infrastruktur vornehmen müssen (z. B. Änderungen an Ihren Datenbankstrukturen), die eine Ausfallzeit erfordern.

Wenn Sie kein kritisches System entwickeln (z. B. ein Fünf-Neun- oder Sechs-Neun- System), müssen Sie verantwortungsbewusst und kostengünstig ein System aufbauen, das Ausfallzeiten als Teil der Realität akzeptiert.

Darüber hinaus gehen Sie noch einen Schritt weiter, indem Sie Ausfallzeiten mit einem klaren Verständnis und Verfahren für eine effektive Wiederherstellung überschaubar und planbar (oder zumindest erkennbar) machen.

luis.espinal
quelle
1
Mathematische Verifikation ist auch kein Allheilmittel. Manchmal stellen Sie fest, dass das, was Sie überprüft haben, nicht das ist, was Sie überprüfen wollten .
Donal Fellows
Wahr. Aber dann würde ich argumentieren, dass das Problem nicht bei der formalen Überprüfung der Spezifikationen liegt, sondern bei der Validierung dieser Spezifikationen. Wenn Ihre Spezifikationen ungültig sind, fällt offensichtlich alles von dort ab, aber die Validierung der Spezifikationen ( "Bauen wir wirklich das Richtige auf, das vom beabsichtigten Benutzer für den beabsichtigten Zweck benötigt wird" ) ist nicht der Fokus der Überprüfung (*) Bauen wir dieses Ding nach diesen Spezifikationen richtig oder kann es gebaut werden? "), informell oder auf andere Weise. Ich denke, ich hätte diesbezüglich einen Vorbehalt einlegen sollen (was die Gültigkeit der Spezifikationen
betrifft
Ich behaupte nicht, dass Sie sich irren, es zu erwähnen. Ich weise nur darauf hin, dass es Grenzen gibt, was es tun kann. Früher habe ich an der formalen Verifizierung gearbeitet, und das große Problem war damals, die Spezifikationen richtig zu entwickeln , um dem sich ändernden Verständnis der Anforderungen Rechnung zu tragen. Da es sich in erster Linie um ein menschliches Problem, in zweiter Linie um ein technisches Problem und in zweiter Linie um ein mathematisches Problem handelt, kann ich mir nicht vorstellen, dass es bereits vollständig gelöst ist.
Donal Fellows
Oh. Ich denke dann sind wir wie denken. Sich ändernde Anforderungen (und die erforderliche Validierung) sind die Achillesferse der formalen Methoden. Da es eine kreative Aufgabe ist (aufgrund ihrer menschlichen Natur), glaube ich nicht, dass sie lösbar ist, nicht so, wie es sich Formalisten / Puristen wünschen. Ich denke, das war eines der fehlgeschlagenen Versprechen von FM. Sie wurden überverkauft (ich meine zum Beispiel formale Methoden für die Webentwicklung ?). Die Spezifikationen müssen genauestens geprüft werden und können nicht schnell geändert werden. Letzteres ist eher die Norm als die Ausnahme.
Luis.espinal
99% der Benutzeroberflächen haben nichts mit formalen Methoden zu tun, sondern mit angewandter Psychologie. Die verbleibenden Beweise liegen auf der Hand („Benutzeroberfläche nicht blockieren“), auch wenn sie nicht immer offensichtlich sind. Wenn Sie die Webanwendung jedoch nach bewährten Methoden getrennt haben, sind formale Methoden in der Ebene der Geschäftsmethoden (auch in der Datenspeicherebene) sehr sinnvoll. In der Regel lautet der Standardhinweis jedoch: Schreiben Sie keine eigenen Methoden DB ”gilt trotzdem. :-))
Donal Fellows
-2

Einmal wurde unsere Website gehackt (alter IIS6- und Windows 2003-Server vor einigen Jahren). Während wir an der Restaurierung arbeiteten, haben wir für ein paar Stunden die "under maintenance" -Seite geöffnet.

Serega
quelle