Ihre Fehlerbehebungsregeln, Ansatz zur Fehlerbehebung? [geschlossen]


22

Haben Sie allgemeine Regeln, auf die Sie zurückgreifen können, wenn Sie ein schwieriges Netzwerk-, Hardware- oder Softwareproblem beheben?

ZB: "Ich isoliere die Ursache des Problems, indem ich ein Peripheriegerät mit einem zweiten Computer teste" oder "Ich entferne so viel Hardware wie möglich, um das Gerät einzuschalten, und füge dann nacheinander Komponenten hinzu, bis ich das Problem reproduzieren kann". , etc.


Vielleicht sollte ich den Titel bearbeiten. ich weiß nur, dass jemand antworten wird "danke! ich bin stolz darauf" ;-)
Benutzername

Antworten:


16

Nur eine Liste von Punkten, die ich für mich selbst aufgeschrieben habe, nachdem ich eine Weile mit einem Problem gekämpft hatte:

  1. Was ist Ihr vorrangiges Ziel ? Sollte klar und präzise angegeben werden. Das Ziel sollte sehr genau sein. Es sollte nicht allgemein sein. Am liebsten einen Satz .
  2. Was ist dein Problem ?
  3. Gibt es nur ein Problem oder viele ? Wenn es viele gibt, lösen Sie sie einzeln.
  4. Versuchen Sie, das Problem unter verschiedenen Bedingungen zu reproduzieren . Kann es unter allen möglichen Bedingungen reproduziert werden oder nicht? Sagt es etwas über die Art des Problems aus?
  5. Wenn es sich um ein dringendes Problem ist es eine Abhilfe ? Versuchen Sie, so viele Problemumgehungen wie möglich zu finden.
  6. Versuchen Sie, so viele Vermutungen wie möglich über die Ursache Ihres Problems anzustellen.
  7. Versuchen Sie, Ihre Vermutungen zu beweisen, experimentieren Sie mit dem System.
  8. Seien Sie konsequent bei dem, was Sie versuchen. Mach eine Sache nach der anderen.
  9. Behalte im Auge, was du tust, was du bereits ausprobiert hast.
  10. Weiche nicht von deinem primären Ziel ab. Prüfen Sie ständig, ob Sie Ihr Hauptproblem noch lösen, kein anderes.
  11. Fixieren Sie auch nicht .

Es gab auch eine große Liste von Debugging-Regeln, die in PDF-Form mit Beispielen und Erklärungen für jede der Regeln vorliegen. Ich konnte das PDF nicht schnell finden, denke aber, dass dies ein Poster der Liste ist:

Bildbeschreibung hier eingeben


15
  • Wenn das Problem mit dem Internet zusammenhängt, liegt es wahrscheinlich am DNS.

  • Wenn das Problem schwer zu diagnostizieren ist, liegt es wahrscheinlich am RAM.

  • Wenn das Problem bei einer Windows-Workstation liegt, ist es wahrscheinlich am schnellsten, ein neues Image zu erstellen.

  • Wenn das Problem an einem Freitag auftritt, ist es wahrscheinlich etwas Ernstes.


Ich wollte einen Witzbeitrag ablehnen, aber er ist überraschend genau!
TessellatingHeckler

Ich mochte # 3; könnte nicht wahrer sein.
Federer

10

Ich greife gerne auf die wissenschaftliche Methode zurück .

Von ( http://en.wikipedia.org/wiki/Scientific_method )

  1. Definieren Sie die Frage
  2. Informationen und Ressourcen sammeln (beachten)
  3. Form Hypothese
  4. Experiment durchführen und Daten sammeln
  5. Daten analysieren
  6. Interpretieren Sie Daten und ziehen Sie Schlussfolgerungen, die als Ausgangspunkt für neue Hypothesen dienen
  7. Dokumentergebnisse

In der Regel versuche ich immer, meine Grundannahmen zu überprüfen. Hat es Strom, ist es eingesteckt, ist die Verkabelung in Ordnung? Es ist sehr ärgerlich, Stunden damit zu verbringen, ein Softwareproblem zu untersuchen, wenn Sie ein loses Kabel haben.

Ich finde es sehr wichtig, in der Phase der Hypothesenerstellung so viele mögliche Ursachen für das Problem zu finden, wie ich kann. Dann versuche ich, zuerst die zu testenden Ideen auszuwählen, basierend darauf, wie einfach der Test ist und wie wahrscheinlich die Idee ist.

Es ist auch wichtig, Hilfe zu bekommen. Wenden Sie sich an Ihre Kollegen, Lieferanten oder an denjenigen, der sich mit den betreffenden Systemen am besten auskennt, wenn Sie dazu in der Lage sind. Wenden Sie nicht viel Zeit auf, um ein Problem zu beheben, wenn jemand verfügbar ist, der Ihnen bei der Lösung des Problems helfen kann.

O'Reilly hat ein gutes Buch Network Troubleshooting Tools , das eine Reihe von Schritten enthält, die der wissenschaftlichen Methode sehr ähnlich sind. Ich fand das Buch sehr nützlich und empfehle es nachdrücklich. Das Buch geht viel detaillierter vor und enthält viele nützliche Tools.

Aus den Tools zur Netzwerk-Fehlerbehebung

  1. Nennen Sie Ihr Ziel
  2. Definieren Sie das System
  3. Identifizieren Sie mögliche Ergebnisse
  4. Identifizieren und wählen Sie aus, was Sie messen möchten
  5. Falls zutreffend, Testparameter und -faktoren identifizieren
  6. Werkzeuge auswählen
  7. Messbedingungen festlegen
  8. Überprüfen Sie das experimentelle Design
  9. Daten sammeln
  10. Daten analysieren

Siehe auch:


Bestimmt. Allerdings ist Schritt 7 etwas humorvoll. Mein Dokument endet normalerweise mit "Ja, es ist behoben. Jetzt funktioniert es."
squillman

Ich respektiere die wissenschaftliche Methode, dachte ich, bevor sie eingeführt wird, sollte es einen menschlichen Faktor geben, der durchlaufen werden muss. Zum Beispiel muss ich die Quelle der Meldung berücksichtigen (die Person, die das Problem meldet) ... und darauf achten, nicht anzunehmen, dass es sich um eine 'vertrauenswürdige' Quelle handelt Hilfsmittel, um mich bei der Definition der Frage zu unterstützen, Informationen zu sammeln und meine erste Hypothese zu bilden).
l0c0b0x

10

(Diese Highlights sind aus dem Kapitel "Debugging" in "Die Praxis der System- und Netzwerkadministration" umschrieben. )

Zwei Dinge zu wissen:

  1. Wissen Sie, wie die "feste" Version aussieht. Vorzugsweise können Sie einen Befehl ausführen, der eine bestimmte Ausgabe liefert, wenn die Dinge funktionieren. Zum Beispiel: Ich versuche herauszufinden, warum SSH nach einem Passwort fragt, wenn ich die Schlüssel richtig eingerichtet habe (oder wie ich dachte). Mein Test lautet also: "ssh servername uptime" und es sollte funktionieren, ohne nach einem Passwort zu fragen.

  2. Beschreiben Sie das Problem auf der richtigen Ebene. Ein Benutzer, der sich beschwert, dass er keinen Ping an einen Server senden kann, sollte Sie nicht zum Ausführen und Reparieren des Servers schicken. Die Person hat nicht die Aufgabe, den ganzen Tag herumzusitzen und eine Maschine anzupingen. Sie möchten eine Aufgabe erledigen, beispielsweise die Verwendung des Computers als DNS-Server. Beispiel: Ein Benutzer hat sich einmal beschwert, dass er eine Maschine nicht auf halbem Weg um die Welt pingen kann. Ich verbringe den Tag damit, Sysadmins in diesem Teil des Unternehmens aufzuspüren, um herauszufinden, was mit dieser Maschine nicht stimmte. Es wurde stillgelegt und sie waren in Panik, weil sie dachten, sie hätten die falsche Maschine ausgeschaltet. Ich nahm Kontakt mit dem Benutzer auf und sagte: "Was möchten Sie außer dem Pingen dieses Computers damit tun?" Es stellte sich heraus, dass er einen bestimmten Auftrag ausführen wollte, und wenn er den richtigen Vorgang ausgeführt hätte, wären seine Aufgaben automatisch auf die Ersatzmaschine umgeleitet worden. Ich hatte meinen ganzen Tag und die Zeit der örtlichen Sysadmins verschwendet. Ein weiterer Grund, warum "Ich kann nicht pingen" nicht zum Testen geeignet ist: Oft sind Firewalls so konfiguriert, dass Ping-Pakete verworfen werden, andere Pakete jedoch durchgelassen werden. Testen Sie, was Sie durchmachen möchten.

Zwei Strategien:

  1. Additiv: Fügen Sie weitere Komponenten hinzu, bis das Problem auftritt. Das Letzte, was Sie hinzugefügt haben, ist das Problem. Beispiel: Webbrowser können nicht mit einem Server kommunizieren. Zwischen dem Server und dem Benutzer befinden sich ein Lastenausgleich, eine Firewall, ein Cache und der lokale Webproxy des Benutzers. Versuchen Sie zuerst, Anfragen direkt an den Server zu senden, dann über die LB an den Server, dann über die Firewall an die LB an den Server usw. usw., und fügen Sie jedes Mal eine Komponente hinzu.

  2. Subtraktiv: Entfernen Sie die Komponenten so lange, bis das Problem behoben ist. Das letzte, was Sie entfernt haben, war das Problem: Beispiel: Ein Computer mit Dutzenden von Karten bootet nicht. Entfernen Sie die Karten so lange, bis die Maschine hochfährt.

Zwei kleine Pechvögel:

  1. Vergiss alles, was ich gesagt habe. Das Problem wird durch die letzte am System vorgenommene Änderung verursacht. (Dies funktioniert in 99% der Fälle. Das Problem ist, dass Sie in 99% der Fälle nicht wissen, was die letzte Änderung tatsächlich war.)

  2. Wenn alles andere fehlschlägt, suchen Sie nach dummen Dingen. http://whatexit.org/tal/mywritings/dumb-things-to-check.html Beispiel: Ein verrücktes Problem konnte einfach nicht erklärt werden. Dann haben wir die Konfigurationsdatei überprüft: Ein Benutzer hat sie bearbeitet, indem er sie auf eine Windows-Box kopiert, bearbeitet und dann zurückkopiert hat. Es hatte jetzt ein ^ M am Ende jeder Zeile. Wir haben es nie bemerkt, weil unser Texteditor diese Tatsache verborgen hat. Leider verwandelte die Software, die die Konfigurationsdatei las, diese ^ Ms in einen ununterbrochenen Raum, der Unmengen anderer Prozeduren vermasselte.


6

Allgemeine Praktiken, an die ich mich während des gesamten Prozesses erinnere:

  1. Schreibe alles auf, was ich tue.
  2. Nehmen Sie jeweils nur eine Änderung vor.
  3. Wenn möglich, machen Sie die Änderung rückgängig, bevor Sie es mit einer anderen versuchen, es sei denn, es werden konkrete Fortschritte erzielt.

Während der Fehlerbehebung definiert hier meine grundlegende Methodik:

  • Wenn das System einwandfrei funktioniert, bevor es ein Problem gibt, versuche ich zu lernen, wie es funktioniert. Joe Richards erklärt, warum in diesem kurzen Raum viel besser als ich könnte .
  • Ich beginne mit der einfachsten Lösung. Zum Beispiel keine Netzwerkverbindung? Überprüfen Sie die physikalische Schicht. Ich kann Ihnen nicht sagen, wie oft zeitweise Verbindungsprobleme kein Serverproblem waren, sondern ein Netzwerkkabel, das zur Hälfte eingesteckt war oder defekt war.
  • Ich versuche, alle Symptome zu erfassen, die ich aus allen wahrscheinlichen Quellen sehe, bevor ich anfange, Änderungen vorzunehmen.
  • Ich führe vorläufige Diagnosetests durch. Wenn mir zum Beispiel mitgeteilt wird, dass ein Server nicht verfügbar ist, verwende ich zuerst ping und nbtstat (Windows), um dies zu überprüfen. Das Problem könnte am fernen Ende liegen (ein altes Sprichwort der Air Force Tech Control auszuleihen).
  • Ich habe keine Angst, die Forschung zu tun. Google, support.microsoft.com, eventid.net und ähnliche Websites sind Ihre Freunde.
  • Ich habe keine Angst, die Community um Hilfe zu bitten. Nicht nur Sites wie serverfault.com, sondern ich habe eine gute Auswahl an Leuten, denen ich vertraue und die ich auf Twitter respektiere, mit denen ich in Kontakt bleibe.
  • Ich bewerte die Antworten, die ich finde, mit dem, was ich sehe. Ich gehe nicht davon aus, dass eine Lösung die richtige ist, bis ich genug über die Beweise nachdenken kann, die ich mit den in der Lösung gemeldeten Ergebnissen sehe.

6

Einstellungen, die ich versuche und halte:

  • Absolutes Vertrauen, dass Ursache und Wirkung funktionieren und nichts magisch ist. Es passiert nichts, was wirklich seltsam ist, nur Dinge, die ich nicht verstehe.
  • Absolutes Vertrauen, dass ich es lösen werde, wenn ich es weiter forciere (dies kann bedeuten, dass ich es zu jemandem bringe, der mehr Wissen hat, lerne, um Hilfe bittet, harte Arbeit leistet usw.).
  • Das Murren darüber, wie ein Setup, Programm oder Szenario schlecht entworfen oder wirklich dumm ist, hilft einfach nicht, also tu es nicht. (Ich finde das schwer, Murren macht Spaß).

Diese Einstellungen sind hilfreich für mich - sie halten mich davon ab, meine Arme in die Luft zu werfen, etwas "Bizarres" zu erklären und dann aufzugeben oder unglücklich zu werden, weil es sich "unlösbar" anfühlt.

Möglichkeiten zur Fehlerbehebung:

  • Systeme haben viele Teile. Wenn sie miteinander verbunden oder zufällig konfiguriert sind, funktionieren sie nicht wie gewünscht. Es gibt eine oder zwei sehr spezifische Konfigurationen, die funktionieren werden - von den Millionen Möglichkeiten, Ziegel und Metall zu stapeln, sind nur einige Brücken und nur eine oder zwei Brücken sind gut genug. Die Ursache könnte ein Zeichen in einer Textdatei oder ein ausgefallener Server sein, aber jeder Teil muss stimmen, damit das Ganze stimmt. Ich muss bereit sein, gründlich und genau zu sein, wenn nötig. Systeme können nicht "die Show muss weitergehen".
  • Sie beginnen mit einem ganzen System wie einer Karte, Sie stellen sich eine Wahrscheinlichkeitswolke vor, die über der Karte schwebt und "wo das Problem liegt" darstellt. Ihre Aufgabe ist es, Erfahrungen zu nutzen und Tests zu finden, um die Wahrscheinlichkeit von einigen Bereichen zu anderen zu verschieben und Um es auf Punkte zu reduzieren, bei denen es sich mit hoher Wahrscheinlichkeit um Problemstellen handelt, greifen Sie diese an. Dies kommt auf den Punkt von Ursache und Wirkung zurück - das Problem liegt im System, es ist keine Zauberei. Es ist ein Problem, das existiert, also muss es irgendwo existieren.
  • Alles kann nach Belieben eingerichtet werden. Die einzige Möglichkeit, ein Verhalten als "OK" und ein anderes als "Problem" zu definieren, besteht darin, dass jemand nicht das bekommt, was er will. Sie müssen verstehen, was sie wollen, was sie klar und spezifisch bekommen.

Der Prozess der Fehlerbehebung:

  • Was ist das Problem. Stellen Sie sicher, dass Sie das Geschehen sehen und es selbst reproduzieren können, damit es nicht zu Missverständnissen kommt. Es gab so oft Probleme mit mehreren Leuten in unserem Helpdesk, bis sie zu mir kamen, dass mir immer noch niemand erklären kann, worin das Problem wirklich besteht.
  • Es ist immer wieder eine rekursive Halbierung - Teilen und Erobern, binäre Suche - Sie kommen mit einem Test, der beweist, ob das Problem auf dieser Seite des Tests oder auf dieser Seite liegt, und den Test so ausführlich wie möglich durchführt, um so viel wie möglich zu eliminieren. Wiederholen, bis gelöst.
  • Erfahren Sie nicht, ob Sie dies vermeiden können - Sie sollten das Datenbankkonto besser sperren und nachweisen, dass das Problem weiterhin auftritt, wenn die Datenbank nicht betroffen ist, als stundenlang zu lernen, wie die Datenbank verwendet wird.
  • Es ist viel zu einfach, mich zu denken "Ich weiß nicht, was ich als nächstes tun soll". Beachten Sie, wenn dies passiert, und kehren Sie zu den Tests zurück, die das Problem lokalisieren.

Das Internet funktioniert nicht? Überprüfen Sie das Problem und stellen Sie fest, dass es sich um eine Website handelt, auf die sie nicht zugreifen können. Schnelltests beinhalten ihre Internetverbindung (funktioniert), wird sie für mich geladen (nein). Schnelle Tests deuten darauf hin, dass es sich um die Site handelt. Nachdem ich gesehen habe, dass das Problem bei mir auftritt, habe ich die Wahrscheinlichkeit schnell von ihrem PC, Browser, DNS, der Office-Firewall des Benutzerkontos usw. verdrängt.

Also wird die Seite nicht geladen, was nun? Das ist noch nicht behebbar, suchen Sie also nach Orten, um das Problem in einen kleineren zu zerlegen. Ist der Server eingeschaltet? Pingt es? funktioniert DNS? Ja. Antwortet der Dienst auf Port 80? Läuft der Dienst? Fängt es an? Gibt es Fehler in den Ereignisprotokollen? Ja! Was sagen Sie?

Dies ist eine effiziente und schnelle Fehlerbehebung, da unablässig darauf geachtet wird, den Umfang des Problems einzugrenzen. Wenn ich den Bericht akzeptiere, dass das Internet nicht funktioniert, würde ich fälschlicherweise annehmen, dass die Verbindung fehlschlägt. Wenn ich mein erstes Anblick akzeptiere, dass es nicht für sie geladen wird, würde ich Zeit auf ihrem Computer verschwenden, weil ich denke, dass es ein Fehler ist.

Teile so groß wie möglich aus "Dingen, die es nicht geben kann".

Verstehe das System. Je mehr Allgemeinwissen ich über ein System habe, desto einfacher wird es. Wenn ich ein schwaches Verständnis habe, sind Probleme einschüchternder, schwieriger und langsamer und führen eher zu einer Problemumgehung als zu einer Behebung oder zu einer großen, blöden, langsamen Behebung (Neuinstallation) als zu einer kleinen, präzisen chirurgischen Behebung.


4

Im Allgemeinen frage ich "Was hat sich geändert, das dieses Problem verursacht haben könnte"? Die meisten Probleme werden durch Änderungen an als funktionierend bekannten Konfigurationen verursacht. Wenn Sie herausfinden können, wer die Änderung vorgenommen hat, erhalten Sie normalerweise Ihre Antwort.


2

Ich denke, es ist eine Fähigkeit, keine Wissenschaft. Es gibt Zeiten, in denen Sie den falschen Weg einschlagen, aber zum größten Teil:

  • Ein gutes Grundverständnis aller damit verbundenen Technologien - Netzwerk, Hardware, Betriebssystem, Software, Entwicklung usw. - hilft Ihnen dabei, einige dieser "falschen Pfade" zu beseitigen.
  • Denken Sie einfach - springen Sie nicht zu den kompliziertesten Szenarien, weil es in Ihrem Kopf liegt, führen Sie die grundlegende Fehlerbehebung durch und lassen Sie sich führen.

Mein Chef rief mich einmal mit einem "leitenden" Techniker am Telefon an - er sagte mir, er habe einen Server, der keine Verbindung herstellen könne, und er habe versucht, das Kabel zu wechseln, aber immer noch keine Freude. Im Hintergrund war ein Piepton zu hören wie bei einer batteriebetriebenen USV. Ich fragte ihn, ob er Aktivität auf dem Schalter sehen könne, er sagte nein. Ich fragte ihn, ob das Piepen von der USV kommt, er sagte ja, ich fragte ihn, ob er überhaupt Lichter im Rack sehen könne, er sagte nein ... Schau hinter deine Nase - es hilft!


1

Ich beginne damit, das Offensichtliche zu überprüfen. Gibt es eine Fehlermeldung, die das Problem erklärt? Ist alles richtig angeschlossen? Ich mag es nicht, mehrere Stunden damit zu verschwenden, Fehler zu beheben, die in wenigen Minuten hätten behoben werden können. Ich denke, es ist möglich, zu methodisch zu sein. Ich habe gesehen, wie Menschen einen ganzen Tag damit verschwendet haben, ein Problem zu reproduzieren, obwohl ich ihnen genau gesagt habe, wo das Problem liegt. Dafür bezahle ich sie nicht.

Wenn die Antwort nicht offensichtlich ist, stellen Sie einige Verdächtige auf und testen Sie diese zuerst. Erst nachdem Sie die wahrscheinlichen Verdächtigen getestet haben, sollten Sie die unwahrscheinlichen Verdächtigen testen. Dann können Sie so wissenschaftlich sein, wie Sie wollen.


hmm. Ich stimme teilweise zu - oder zumindest denke ich, dass es einfach ist, die Regeln anderer zu befolgen, ohne wirklich zu verstehen, wie / wann sie angemessen sind. Wie Gymnasiasten, die gezwungen sind, Mathematik zu lernen, aber keine Situation erkennen, in der sie das verwenden könnten, was sie im wirklichen Leben gelernt haben. Aber die richtige Zeit zu verstehen, um die richtige Regel anzuwenden, kann wirklich ein Segen sein. ZB: Google "HalfSplit-Methode" als Beispiel für eine nachweislich effiziente Fehlerbehebungsregel
Benutzername

Ihre Methode, das Offensichtliche auszuschließen, ist nicht unwissenschaftlich. Sie durchlaufen nur schnell mehrere Iterationen der Hypothesen- und Testschritte. Ich bin der festen Überzeugung, dass Sie Ideen Vorrang einräumen sollten, auf die Sie schnell testen können.
Zoredache
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.