Autor Thema: Semaphore  (Gelesen 10089 mal)

Offline ebse

  • Aktives Mitglied
  • ***
  • Beiträge: 185
  • Geschlecht: Männlich
Semaphore
« am: 10.05.06 - 09:22:47 »
Hallo Zusammen,

habe den Parameter
Code
DEBUG_SHOW_TIMEOUT=1
in unsere "Notes.ini" aufgenommen um die "Semdebug.txt" zu bekommen und aufgetrettene Timeouts zu analysieren.

Nun das Problem: Das einzigste was in der SEMDEBUG.txt steht ist
Code
SEMDEBUG_NOTES-PROD01_2006_05_10@06_00_02.TXT
Kann ich damit irgendwas anfangen?? der Parameter steht seit vorgestern drin, wir hatten gestern Timeouts!
Nach recherchen müsste dort aber viel mehr drinstehen... anbei auch noch ein Screenshot der Konsole zum Zeit des Timeout (dieser ist von heute, gestern sahs genau gleich aus)!

Wo könnte der Fehler liegen, dass das SEMDEBUG File nicht richtig geschrieben wird?

!!Bin für jeden Hinweis echt DANKBAR!!

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: Semaphore
« Antwort #1 am: 10.05.06 - 09:33:09 »
Hallo!

Du bekommst die Informationen nur auf der Console angezeigt. Um Sie in die Datei zu kriegen musst du noch DEBUG_CAPTURE_TIMEOUT=10 angeben. Siehe auch http://eknori.dyndns.org/knowledge/kbnv11.nsf/0/0437a986b2564578852565f4007c9103?OpenDocument

Grüße

Ralf
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline ebse

  • Aktives Mitglied
  • ***
  • Beiträge: 185
  • Geschlecht: Männlich
Re: Semaphore
« Antwort #2 am: 10.05.06 - 09:39:55 »
Vielen Dank erstmal dazu.

Wohin schreibt er dann das File??

Und kann es sein das er jetzt schon was in die LOG.nsf geschrieben hat?? hat irgendwas auf der Konsole angezeigt von "logged to D:\Notes\Date\log.nsf" (oder so ähnlich). In der Log.nsf find ich aber nichts.

Außerdem hab ich noch diesen Wert über "sh stat sem.timeouts" bekommen, was sagt dieser aus?
Code
Sem.Timeouts	0244:549 012E:94 0A12:21 041A:13 012D:3 0147:2 0A0B:2 0931:1 0921:1 

Kann man mit dem zuvor geposteten screenshot schon was anfangen??

DANKE IM VORRAUS!

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: Semaphore
« Antwort #3 am: 10.05.06 - 10:12:41 »
Sollte unter IBM_TECHNICAL_SUPPORT sein.

Nein rein aus dem Screensho kann man wenig erkennen, da er nicht vollständig ist. Was du auf jeden Fall auch noch brauchst, ist ein Tool mit dem man schauen kann, welche Threadid was ist. Eventuell wäre auch noch ein Tool gut mit dem man den Stacktrace des Threads anschauen kann. Wir verwenden, Domino auf der Iseries, da ist das alle im Betriebssystem integriert und kann bequem über wrkactjob eingesehen werden.

Zu den Semdebug Meldungen.

Darin findest du die Meldung welcher Thread auf welchen Semaphore wartet und von welchem Thread der momentan belegt wird. Du musst nun sozusagen, die Threads von hinten nach vorne verfolgen um den Thread zu finden, der den ersten Semaphore blockiert und nicht mehr freigibt.

Prinzipiell sind Semaphore eine Technologie mit der Domino verhindert, dass verschiedene Threads gleichzeitig eine Aktion durchführen, die nicht gleichzeitig gemacht werden darf. Ein Beispiel Thread A sagt, ich möchte die view xy updaten. Dann darf das kein andere Thread machen. Deshalb setzt Thread A einen Semapore lock für diese view. Wenn nun Thread A aus irgendeinem Grund nie mehr fertig wird mit seinem update. Dann kommt es irgendwann dazu, dass auch andere Threads auf diese Semaphore zugreifen wollen und hängen bleiben. Diese Thread blockieren aber bereits andere Semaphofes und über kurz oder lange, hängt dein ganzer Server. Hoffe ich habe es verständlich erklärt.

Grüße

Ralf
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline ebse

  • Aktives Mitglied
  • ***
  • Beiträge: 185
  • Geschlecht: Männlich
Re: Semaphore
« Antwort #4 am: 10.05.06 - 10:32:49 »
Super Klasse! Danke für die Erklärung!

Was muss ich unter "Thread" vestehen??

Unter Windows2003 Server seh ich die sogenannte "PID (Process ID) im Task Manager. Reicht mir die??

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: Semaphore
« Antwort #5 am: 10.05.06 - 10:45:55 »
Jein, soweit ich Windows verstehe sollte die ersten Stellen der ThreadId vor dem Dopelpunkt der PID entsprechen. Insofern solltest du zumindest den Prozess herauskriegen, der dein Problem verursacht. Ein Thread ist eine Unterteilung eines Prozesses. Lies sonst mal in der Wikipedia nach. Eventuell helfen auch die Tools von Sysinternals.

Grüße

Ralf

P.S. Meiner Meinung nach ohne einen Flamewar starten zu wollen, ein gravierender Nachteil von Windows, dass es keine vernünftigen Boardmittel gibt um die laufenden Prozesse zu überwachen.

Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline ebse

  • Aktives Mitglied
  • ***
  • Beiträge: 185
  • Geschlecht: Männlich
Re: Semaphore
« Antwort #6 am: 10.05.06 - 10:56:39 »
Ok ich werd mir dann morgen nachdem der Server neu gestartet wurde das SEMDEBUG File anschauen und mich dann evtl. nochmal melden!!

DANKE NOCHMAL!!

Offline smoki

  • Senior Mitglied
  • ****
  • Beiträge: 325
  • Geschlecht: Männlich
    • Smoki's Lotus Notes
Re: Semaphore
« Antwort #7 am: 10.05.06 - 23:59:18 »
Threads laufen parallel auf dem Rechner, ähnlich wie Prozesse.

Im Prinzip besteht jeder Prozess aus mindestens einem Thread. Der Vorteil von Threads ist, dass diese sich innerhalb eines Prozesses den Speicherbereich und die Umgebung (Umgebungsvariable, Userkennung usw.) teilen und verschiedene Teilaufgaben parallel verarbeiten können.

Durch Threads, kann ein Prozess mehrere Aktionen gleichzeitig durchführen, ohne diese Sequenziell abarbeiten zu müssen. Zum Beispiel wartet ein Thread auf die Ergebnisse von der Festplatte, während der andere schon die nächste Usereingabe abfragen kann und ähnliches.

Da sich die Threads einen Speicherbereich teilen, muss unbedingt verhindert werden, dass diese Parallel den gleichen Speicherbereich beschreiben. Die Kommunikation der Threads läuft meistens über Speicherbereiche, die sich die Threads teilen. Diese Bereiche kann sich ein Thread mit einem Mutex oder einer Semaphore kurzzeitig(hoffentlich...) für sich beanspruchen und die anderen Threads warten (bleiben stehen...Suspend), wenn diese nun auch diesen Bereich auch lesen oder bearbeiten wollen.

Problematisch wird es beispielsweise, wenn ein Prozess zwei Threads mit zwei Speicherbereichen hat und nun gliechzeitig folgendes passiert:

Thread 1 nimmt sich nun den Speicherbereich 1
Thread 2 nimmt sich nun den Speicherbereich 2

anschließend wollen beide (praktisch gleichzeig) folgendes tun:

Thread 1 will nun auch Speicherbereich 2 haben
Thread 2 will nun Speicherbereich 1 haben

Jetzt warten die beiden Threads endlos aufeinander (Suspended) und es entsteht ein Dead-Lock!

Um solche Probleme zu verhindern, gibt es verschiedene Ansätze. Der einfachste Ansatz ist, dass es eine festgelegte Reihenfolge gibt, nachdem Gelocked wird. D. h. wenn ein Thread mehrere Speicherbereiche haben möchte, reserviert er diese immer Aufsteigend (oder Absteigend... egal... hauptsächlich einheitlich) . Leider ist dieser Ansatz in der Praxis schwer durchzuhalten oder einer der Programmierer kannte diese Vorgabe nicht und tut es eben falsch.

Ich hoffe, das erklärt es (vereinfacht) in Grundzügen.

Gruss
Chris

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: Semaphore
« Antwort #8 am: 11.05.06 - 08:06:32 »
Sehr gute Beschreibung eines Deadlocks. Nur tritt hier offensichtlich nicht ein Deadlock auf, da soweit ich es verstanden habe nach einiger Zeit die Timeouts wieder aufhören. Eventuell kann das der Ursprungposter nocheinmal präzissieren.

Grüße

Ralf
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline smoki

  • Senior Mitglied
  • ****
  • Beiträge: 325
  • Geschlecht: Männlich
    • Smoki's Lotus Notes
Re: Semaphore
« Antwort #9 am: 11.05.06 - 08:36:12 »
OK.... ergänzend. Der Timeout entsteht, wenn der Thread zu lange wartet (bsp. 30 Sekunden), dadurch wird ein Endlos langer Dead-Lock verhindert. Und ja es kann auch entstehen, wenn ein Thread eine Ressource zu lange bearbeitet. z. B. View-Index neu aufbaut. (Wurde weiter oben ja schon mal erwähnt...) :)

Offline ebse

  • Aktives Mitglied
  • ***
  • Beiträge: 185
  • Geschlecht: Männlich
Re: Semaphore
« Antwort #10 am: 11.05.06 - 09:04:16 »
Vielen Dank mal für die super Erklärung!

Anbei noch ein Auszug aus dem Semdebug File von heute morgen:

Code
ti="00248848-C125716B" sq="00007A67" THREAD [0DF0:0273-0914] WAITING FOR FRWSEM 0x0244 database semaphore (@01E242D1) (D:\Notes\Data\log.nsf) (R=0,W=2,WRITER=0F48:0A08,1STREADER=0000:0000) FOR 30000 ms
ti="00248848-C125716B" sq="00007A68" 456789:;=>?@ABCDEFGH
JKLMNOPQRSTUVXYZ[\]^_`abcdeghijklmnopqrstu·xyz{|}Ú€?‚ƒ„…†‡ˆ‰Š‹Œ?Ž??‘’“”•–—˜™š›œ?žŸ ¡¢£í¥¦§¨©ª«¬­®¯°±²³´µ¶ý`e!00000000: FACE 6600 0244 0000 0000 0000 0000 FFFF   'Nz.fD...........'
00000010: 

ti="002488F5-C125716B" sq="00007A69" THREAD [0DF0:027E-00B8] WAITING FOR FRWSEM 0x0244 database semaphore (@01E242D1) (D:\Notes\Data\log.nsf) (R=0,W=2,WRITER=0F48:0A08,1STREADER=0000:0000) FOR 30000 ms
ti="002488F5-C125716B" sq="00007A6A" 456789:;=>?@ABCDEFGH
JKLMNOPQRSTUVXYZ[\]^_`abcdeghijklmnopqrstu·xyz{|}Ú€?‚ƒ„…†‡ˆ‰Š‹Œ?Ž??‘’“”•–—˜™š›œ?žŸ ¡¢£í¥¦§¨©ª«¬­®¯°±²³´µ¶ý@“E00000000: FACE 6600 0244 0000 0000 0000 0000 FFFF   'Nz.fD...........'
00000010: 

ti="00248945-C125716B" sq="00007A6B" THREAD [0DF0:027D-01AC] WAITING FOR FRWSEM 0x0244 database semaphore (@01E242D1) (D:\Notes\Data\log.nsf) (R=0,W=2,WRITER=0F48:0A08,1STREADER=0000:0000) FOR 30000 ms
ti="00248945-C125716B" sq="00007A6C" 456789:;=>?@ABCDEFGH
JKLMNOPQRSTUVXYZ[\]^_`abcdeghijklmnopqrstu·xyz{|}Ú€?‚ƒ„…†‡ˆ‰Š‹Œ?Ž??‘’“”•–—˜™š›œ?žŸ ¡¢£í¥¦§¨©ª«¬­®¯°±²³´µ¶ýžE00000000: FACE 6600 0244 0000 0000 0000 0000 FFFF   'Nz.fD...........'
00000010: 


Was kann ich jetzt hierraus lesen?? Was hat das
Code
(D:\Notes\Data\log.nsf) 
zu bedeuten??

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: Semaphore
« Antwort #11 am: 11.05.06 - 09:18:43 »
Meiner Meinung nach, musst du schauen, was der Thread 0F48:0A08 macht. Das ist der Thread der den Semaphore momentan hat. Dazu nimmst du das Tool von Sysinternals Process Explorer. Dann kannst du den Stacktrace dieses Threads anschauen während er den Semaphore locked. Eventuell sagt uns die Funktion die er ausführt etwas. Sonst kannst du diese Daten an den IBM Support weitergeben. Die finden dann meistens relativ schnell raus, was es hat.

Grüße

Ralf
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Semaphore
« Antwort #12 am: 11.05.06 - 09:23:31 »
P.S. Meiner Meinung nach ohne einen Flamewar starten zu wollen, ein gravierender Nachteil von Windows, dass es keine vernünftigen Boardmittel gibt um die laufenden Prozesse zu überwachen.
Dafür gibt es ja PSList.
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline ebse

  • Aktives Mitglied
  • ***
  • Beiträge: 185
  • Geschlecht: Männlich
Re: Semaphore
« Antwort #13 am: 11.05.06 - 09:26:24 »
ok..

also so wie ich es verstanden hab ist doch bei "0F48:0A08" der Wert vor dem Doppelpunkt die ProcessID unter Windows in HEX also "3912" in Dezimal... diese ProcessID hat bei uns der Task "ncompact.exe"! Sagt das schon was aus?

Was bedeutet die Zahl hinter dem Doppelpunkt?

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: Semaphore
« Antwort #14 am: 11.05.06 - 09:35:20 »
Nun es ist sicher problematisch wenn du Ncompact unter tags laufen lasst, warum macht Ihr das.
Der Wert hinter dem Doppelpunkt ist die Thread ID. Hast du dir schon den Process Explorer von Sysinternals angeschaut. Ist wirklich ein tolles Tool.


Grüße

Ralf
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline ebse

  • Aktives Mitglied
  • ***
  • Beiträge: 185
  • Geschlecht: Männlich
Re: Semaphore
« Antwort #15 am: 11.05.06 - 09:39:18 »
Also könnte es am "ncompact" liegen??

Tool hab ich mir angeschaut. Ist das komplett Freeware auch für den geschäftlichen Gebrauch? Läuft es stabil und verursacht auch keine Fehler auf dem Server?! Erfahrungen allgemein??

EDIT: was hat der Pfad (D:\Notes\Data\log.nsf) in dem SEMDEBUG File zu bedeuten?? kann es sein das er beim komprimieren dieser Datenbank einen Timeout entsteht??
« Letzte Änderung: 11.05.06 - 09:42:40 von ebse »

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: Semaphore
« Antwort #16 am: 11.05.06 - 09:42:38 »
Soweit ich es beurteilen kann, ist es Freeware. Wir haben keinen Windows Server aber auf dem Client hatte ich noch keine Probleme damit. Laufen lassen würde ich das Tool sowieso zu Zeiten wo es Probleme gibt. Zu Ncompact, je nachdem mit welchen Parametern er läuft, könnte ich mir schon vorstellen, dass der ein Problem macht. Meiner Meinung nach sollte Ncompact nur in der Nacht oder besser noch zum Wochenende laufen.

Grüße

Ralf
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline ebse

  • Aktives Mitglied
  • ***
  • Beiträge: 185
  • Geschlecht: Männlich
Re: Semaphore
« Antwort #17 am: 11.05.06 - 09:45:49 »
Zu Ncompact, je nachdem mit welchen Parametern er läuft, könnte ich mir schon vorstellen, dass der ein Problem macht. Meiner Meinung nach sollte Ncompact nur in der Nacht oder besser noch zum Wochenende laufen.

der compact läuft mit dem Parameter "-B"!

und nochmal die Frage falls es einer oben übersehen hat: was hat der Pfad (D:\Notes\Data\log.nsf) in dem SEMDEBUG File zu bedeuten?? kann es sein das er beim komprimieren dieser Datenbank einen Timeout entsteht??

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: Semaphore
« Antwort #18 am: 11.05.06 - 09:49:29 »
Zu deiner Frage möglich, aber kann ich nicht sicher beantworten. Eines ist aber sicher, sehr viele Prozesse und Thread schreiben in die Notes.log Beim komprimieren muß er den zugriff darauf aber sicher immer wieder sperren. Wenn jetzt das Compact länger dauert dann kann das schon ein Problem verursachen. Was ich mich aber noch immer frage, warum machst du ein Compact während der normalen Zeit?

Grüße

Ralf
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline Lossa

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.404
  • Geschlecht: Männlich
    • alphaTrain
Re: Semaphore
« Antwort #19 am: 11.05.06 - 09:55:01 »
Hi,

die compact regelmässig laufen zu lassen ist sehr lobenswert, abär...

Bitte NIE Tagsüber immer nur Nachts.

Auf die Log.nsf, greift der Server permanent zu und wenn diese gleichzeitig compacted wird gibt das definitiv Probleme, nachts ist das weniger los und dann geht es besser.

Viele Grüße

Ulrich Lossa
Aktiv als Notes Admin und Entwickler seit Version 1.
Freier Trainer und Berater.
Zertifiziert für alle Versionen SA und DB.
HCL Certified Administrator
IBM Certified Advanced Application Developer (PCLP AD)
IBM Certified Advanced System Administrator (PCLP SA)
IBM Certified Instructor for System Administration and Application Development ( CLI)
IBM Certified Instructor for Websphere Software
IBM Certified Instructor for DB2
http://www.alphatrain.de
Lossa@alphatrain.de

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz