Frage

Ich weiß, das ist wahrscheinlich das kanonische „Es kommt darauf an ...“ Frage, aber ich würde irgendwelche Hinweise zu schätzen wissen, wo zu Beginn der Suche.

Ich habe eine Client / Server-Anwendung über Ethernet zu sprechen. In einem Computer ausführen ich den Server und einen Client und auf einen anderen nur den Client. Man läuft Vista und man läuft XP. Nach einer Betriebszeit von ca. 3 Wochen des gesamten Computer friert und nichts funktioniert, nicht die Maus, die Tastatur nicht, nichts -Just ausgeschaltet. Alle zehn Sekunden wird der Server sendet eine Ping-Nachricht, wenn die Kunden am Leben, andere sind zu sehen, als dass nur ein paar kleine Nachrichten hin und her gehen jeden Tag.

Ich versuche, herauszufinden, ob es mir oder etwas anderes verursacht. Ich habe eine Sitzung und nach ein paar Tagen begann ich dachte, dass ich für seltsame Anstieg der Speichernutzung überprüfen würde, aber darüber hinaus, dass ich nur sehr wenige Ideen.

War es hilfreich?

Lösung

Einige Gedanken zu berücksichtigen:

  1. Sie wissen, dass der Computer nicht mehr reagiert, aber das bedeutet nicht, es hängt ist. Ist es auf einen Ping reagieren?
  2. Vielleicht ist die Plattenaktivität Licht auf die ganze Zeit?
  3. Sie sagen, "keine Tastatur?" - meinen Sie keine Caps Lock oder Num-Taste leuchtet
  4. Obwohl die .NET-Anwendung das einzige sein können Sie zur Zeit laufen lassen, das bedeutet nicht, es ist die Ursache des Problems ist. Einige Hintergrund-Job sein könnte, es zu tun.

Zum Beispiel habe ich feststellen, dass Retrospect-Backup, wenn es einen Snapshot erstellen, das gesamte System für 10-15 Minuten einfriert. Ich meine, keine Caps Lock, wird die Uhr in der Taskleiste nicht aktualisiert werden, kein CTRL-ALT-DEL kann nicht in ein „Antwort“ Textfeld in SO, nichts geben. Es hatte nichts mit dem zu tun, was ich damals tat, die auf SO eine Frage beantworten.

Nachdem es kam zurück, SO gefragt, ob ich ein Mensch war. Meine Gefühle wurden verletzt. ; -)

Andere Tipps

Sie können einen Kernel-Debugger an den OS anhängen. Auf diese Weise sollten Sie in der Lage sein, den Zustand des Betriebssystems und Ihres Prozesses zu untersuchen, auch wenn das Betriebssystem vollständig unempfänglich ist. (Leider ist es viel schwieriger, als nur „Pause“ in VS. Schlägt ich John Robbins „Debuggen von Anwendungen für .NET und Windows“ empfehlen, das Lesen vor, dass der Versuch.)

Sie können auch versuchen, Speicher-Dumps Ihrer Anwendung in regelmäßigen Abständen zu erstellen. Sie könnten ein wenig Scripting für das zu tun haben, though. (In der Regel, dann würden Sie einen Dump mit einem Tastendruck erstellen, ein Tool wie userdump oder adplus verwenden, aber wenn das Betriebssystem nicht auf Tastatureingaben reagiert, das wird nicht funktionieren.) Auf diese Weise wissen Sie, was geben Sie Ihren Prozess ist in während oder kurz vor einem hängen. Diese Seite: http://blogs.msdn.com/debuggingtoolbox/default.aspx Punkt ist ein guter Ausgang für Skripting WinDbg. (Wenn Sie nicht wissen, was mit einem Speicherabbild zu tun, würde ich wieder John Robbin ausgezeichnetes Buch auf Debuggen vorschlagen!)

Other than that, kann ich denke nur an Standard-Debugging Tricks: tritt das Problem auf jedem PC auftreten? Kommt es vor, wenn es keine Client-Anfragen sind? Ist es eher passieren, wenn es mehr Client-Anfragen sind? Ist es eher passieren, wenn es weniger physische Speicher ist? Versuchen Sie Teile Ihrer Anwendung (möglicherweise auf einem separaten Server zum Testen) zu entfernen und sehen, ob das Problem weiterhin auftritt, und so weiter. Versuchen Sie es in einer VM laufen, so dass Sie sehen können, wenn es um die CPU verwendet, Festplatte oder Netzwerk während dieser „hängt“.

Das wird nicht sein die Antwort, aber ich würde raten, indem Sie Ihre OS-Ereignisprotokolle Starten und Ausführen eines perfmon Spur der Erinnerung zu halten, CPU-Auslastung, etc.

Welche Computer friert, der Server oder Client? Und was OSes sie laufen jeweils?

Wie Daniel L erwähnt, eng Abfrageschleifen können wirklich die CPU töten. Wenn Sie können, Ihren Code ändern Event-Handler zu verwenden, ist es eine viel robustere Lösung.

Schließlich sind Sie sicher, dass es nicht ein Hardware-Problem auf dem Einfrieren Computer?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top