[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Aug 2001
    Beiträge
    2.714
    Zitat Zitat von ChrisX Beitrag anzeigen
    D.h. sie geben zum Beispiel etwas ein und warten dann ca. 5-6 Min. bis zur nächsten Maske (Kann stark variieren). Wenn ich mir den Job zum Beispiel anschaue, sehe ich dass der Job status RUN ist, also kein LCKW oder dergleichen vorliegt.
    Hallo Chris,

    ist das Verhalten nur bei einzelnen Jobs bei speziellem Anwendungsbereich sichtbar, oder auch bei mehreren / anderen?

    Wenn Du 5722PT1 installiert hast, probiere den Befehl WRKSYSACT (alternativ gibt es WRKSYSAC2 als Shareware/Free demo). Da sieht man mit mehrmaligem F11 und Auswahl 6 halbwegs brauchbare Angaben zur I/O-Last und Speicherbelegung.

    Eventuell steht auch was beim QSYSOPR, dass die (bei Euch limitierte) Interaktivkapazität am bitteren Ende ist.

    -h

  2. #2
    Registriert seit
    Jan 2003
    Beiträge
    118
    Hallo Chris,

    kann es sein, dass der Job gelockt ist?

    Ich würde - wenn das Problem das nächste Mal auftritt - zuerst in den Joblog schauen (WRKJOB - Auswahl 10, dann F10 - F5 - F18) ggfs. steht da ja ein Hinweis auf das Problem.

    Zusätzlich würde ich noch kontrollieren, ob der Job überhaupt noch CPU-Zeit verwendet (WRKJOB - Auswahl 3) und mit F5 kontrollieren, ob sich die "benutzte CPU-Zeit" weiter erhöht.

    Außerdem sollte man mit WRKACTJOB und F16 auf CPU die CPU-Auslastung beobachten.

    Viel Erfolg.

    Jo

  3. #3
    Registriert seit
    May 2006
    Beiträge
    22
    So, erstmal wieder Vielen Dank für die Informationen!

    @Fuerchau: Das mit der QAQQINI hört sich interessant an, werde versuchen dies mal umzusetzen. Wenn ich mir andere Jobs anschaue sehe ich eigtl. im Schnitt meist 500-600 open data paths. Eher selten, dass die zahl hier bei 100 oder weniger liegt. Das Problem ist, dass ich nicht genau weiss welches Programm die "Verzögerung" produziert, daher weiss ich auch nicht auf welches Programm ich ein PRTSQLINF machen sollte. Mein Gedanke war ja hier dass ich den Callstack auslese/dumpe um dies herauszufinden.

    @holgerscherer: Das Verhalten ist nur in bestimmten Anwendungsbereichen sichtbar. Bei dem betroffenen Anwenderpool betrifft es beispielsweise nur den Order Entry. Alle anderen Funktionen/Abfragen laufen laut Anwender performant. Nur bei der Auftragseingabe kommt es sporadisch zu "unakzeptablen" Verzögerungen. Man kann leider auch nicht sagen dass es ein dauerhaftes problem ist. Es gibt auch zeiten (unregelmäßig) zu denen es akzeptabel läuft.

    WRKSYSACT habe ich auch schon öfter mitlaufen lassen. Es besteht zwar häufig eine hohe CPU Last, jedoch meist auch durch BATCH Jobs und nicht INTeraktiv. Es ist mir auch noch nicht aufgefallen dass die CFINT0X jobs versuchen Kapazität zu sperren. Auch im QSYSOPR Log gibt/gab es bisher keine Einträge darüber dass die Interaktive Leistung überschritten wurde. Generell bin ich auch der Meinung, dass eigtl. fast jeder Anwender Performance Probleme haben müsste, wenn das System am Limit mit seinen Resourcen wäre. Es betrifft aber wirklich nur Mitarbeiter welche mit Order Entry beschäftigt sind. Zumindest haben sich bisher noch keine Anwender in anderen Bereichen mit den gleichen Problemen gemeldet.

    @jo400: Wenn diese probleme auftreten rufen mich die Anwender meist direkt an. Ich beobachte dann generell den job status. Es kam zwar vereinzelt mal vor, dass der Job ein kurzes Object Lock hatte (LCKW) aber dies war entweder kein Dauerzustand über die ganzen 5-6 Minuten noch habe ich das gefühl, dass mit den "kurz" auftretenden Lockwaits ein wirkiches problem besteht. Normalerweise hat der Job den Status RUN. Wenn ich in das Joblog schaue, sehe ich zum aktuellen Zeitpunkt (also wenn der Job hängt) meist nur den folgenden letzten Eintrag:

    Open of member XXX was changed to SEQONLY(*NO).

    Das ist meist der einzige Eintrag den ich sehen kann.

    Die CPU Auslastung ist oft sehr schwankend, wobei die meiste CPU Zeit von BATCH Jobs mit PRIO > 20 gebraucht wird.

    Meine Idee war, dass ich mit Hilfe des Call Stacks das Programm, welches aktuell "arbeitet" herausfinden kann um dann zu prüfen was dieses Programm genau macht und warum die Zeitverzögerung zustande kommt.

    Laut Anwender wurde die performance über Monate hinweg immer schlechter.

    Auch die Betreuer der Applikation habe ich schon darauf hingewiesen dass es mit BPCS Performance Probleme geben kann, wenn manche Dateien nicht reorganisiert werden. Aber hier hat eine Bereinigung auch nichts gebracht.

    Noch eine kleine Info:
    Das System wird monatlich IPLed und halbjährlich wird ein RCLSTG gefahren. Die Performance Analyse (Über die Performance Tools) ergab, dass die Disk Arms stark beansprucht sind. Der Systemwert QPFRADJ steht auf 2. Die Plattenplatzbelegung liegt momentan bei ca. 75%.

    Danke schonmal + Gruss
    Chris

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.379
    Hallo,

    Ferndiagnosen sind meist schwierig, aber trotzdem ein paar Anmerkungen zu den zitierten Aspekten:

    wenn du den "Klemmer" beobachtest, dann einfach in der Call Stack Anzeige so oft man es schafft refreshen und von dem aktiven Programm Hardcopys machen liefert eine statistische Verteilung der runtime Anteile (was anderes machen die Performance tools letztlich auch nicht. Wenn da einer 90 % hat -> et voila.

    open of member was changed to seqonly riecht nach full table scan (ist in den reads nicht auffällig wg. Blockung und könnte Plattenaktivität plausibel erscheinen lassen.

    mfg

    Dieter Bender

    Zitat Zitat von ChrisX Beitrag anzeigen
    So, erstmal wieder Vielen Dank für die Informationen!

    @jo400: Wenn diese probleme auftreten rufen mich die Anwender meist direkt an. Ich beobachte dann generell den job status. Es kam zwar vereinzelt mal vor, dass der Job ein kurzes Object Lock hatte (LCKW) aber dies war entweder kein Dauerzustand über die ganzen 5-6 Minuten noch habe ich das gefühl, dass mit den "kurz" auftretenden Lockwaits ein wirkiches problem besteht. Normalerweise hat der Job den Status RUN. Wenn ich in das Joblog schaue, sehe ich zum aktuellen Zeitpunkt (also wenn der Job hängt) meist nur den folgenden letzten Eintrag:

    Open of member XXX was changed to SEQONLY(*NO).

    Das ist meist der einzige Eintrag den ich sehen kann.

    Die CPU Auslastung ist oft sehr schwankend, wobei die meiste CPU Zeit von BATCH Jobs mit PRIO > 20 gebraucht wird.

    Meine Idee war, dass ich mit Hilfe des Call Stacks das Programm, welches aktuell "arbeitet" herausfinden kann um dann zu prüfen was dieses Programm genau macht und warum die Zeitverzögerung zustande kommt.

    Laut Anwender wurde die performance über Monate hinweg immer schlechter.

    Danke schonmal + Gruss
    Chris
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  5. #5
    Registriert seit
    May 2006
    Beiträge
    22
    Zitat Zitat von BenderD Beitrag anzeigen
    Hallo,

    Ferndiagnosen sind meist schwierig,...
    Ich weiss ;-D, daher bin ich ja froh um jede Antwort und jeden Tip ^^

    Gruss
    Chris

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.752
    Changed to SEQONLY(*NO) deutet meist darauf hin, dass die Datei mit FRCDATA(1) definiert wurde, d.h., dass jeder Write sofort auf die Platte muss.

    Wenn da nicht so viel geschrieben wird, hat das keine nennenswerte Auswirkung.

    Ein CPYF kann mit FRCDATA(*NONE) z.B. bis Faktor 100 oder mehr kopieren.

    Der Call-Stack muss da eher genau analysiert werden, da die Programm meistens in Q-Programmen (SQL/DB) verschwinden.

    Kritisch ist es z.B., wenn da ein QQQ-Programm länger benötigt (Optimizer).

    Ich tippe aber eben eher auf sinnlose Abfragen über tausende Sätze an Stelle gezielter Zugriffe.

    Wenn Du schon den Ansatz hast, dass der OrderEntry Schuld hat, würde ich mich mal darauf konzentrieren und die Anzahl Zugriffe auf die Dateien beobachten (was bei >500 ODP's zugegegeben etwas schwierig ist).
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  7. #7
    Registriert seit
    Jul 2002
    Beiträge
    151
    Hallo Chris,
    wenn die User 5-6 Minuten warten, brauchst Du den Call Stack nicht mitzuprotokollieren.
    Da sollte dspactjob und Auswahl 10 reichen dann F10 drücken (Stapel aktualisieren) um zu sehen in welchem PGM und an welchem Befehl er hängt.

    mfG Holger

Similar Threads

  1. Call in einem Ile-RPG
    By dino in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 17-01-07, 10:23
  2. "remote" - call
    By hh-mi in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 15-11-06, 13:23
  3. CALL PGM schlägt fehl
    By alexander may in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 18-05-06, 21:16
  4. rekursiver Call
    By Marimari1009 in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 03-05-06, 18:30
  5. Retrieve Call Stack (QWVRCSTK) API
    By kuempi von stein in forum NEWSboard Programmierung
    Antworten: 11
    Letzter Beitrag: 20-08-04, 16:08

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •