Job automatisch abbrechen lassen?

Alle Fragen rund um Basisthemen
10 Beiträge • Seite 1 von 1
10 Beiträge Seite 1 von 1

Job automatisch abbrechen lassen?

Beitrag von micha1904 (ForumUser / 7 / 0 / 0 ) » 19.05.2006 07:46

Hallo zusammen,

hat jemand eine Idee, wie man einen Job der mit der TA SM36 erstellt wurde automatisch abbrechen lassen kann?

Grund ist folgender, wir haben immer wieder Probleme mit einen Job, der sporadisch sich zu einem Langläufer entwickelt und so unsere gesamten Nachtjobs beinflusst. Wenn dieser Job manuell abgebrochen wird und dann wieder neu aufgesetzt wird läuft er. Alle uns bekannten Möglichkeiten haben wir bereits ausgenutzt, um die Ursache zu erforschen aber leider ohne Erfolg.

Vielen Dank für eure Hilfe.

mfg

Micha1904


Beitrag von Thomas R. (Expert / 695 / 43 / 27 ) » 19.05.2006 08:53

Hallo Micha,

m.E. kommt Ihr nicht umhin, den Abbruch entweder von außen durch einen separaten Job zu erledigen, der prüft wie lang Euer Langläufer schon unterwegs ist oder dies durch den Langläufer selbst erledigen zu lassen.
Eine Möglichkeit die maximale Laufzeit mit Standardmitteln vorzugeben ist mir nicht bekannt. :(

MfG
Thomas R.

Beitrag von micha1904 (ForumUser / 7 / 0 / 0 ) » 19.05.2006 10:35

Hallo Thomas,

danke für deine schnelle antwort.

wie kann ich das realisieren? bzw. hast du eine idee, wie ich den job bzw. job-benutzer automatischen tracen kann?

glückauf

micha

Beitrag von Thomas R. (Expert / 695 / 43 / 27 ) » 19.05.2006 10:45

Hallo Micha,
wenn Du dies nur für einen Job bzw. Jobstep brauchst der eine Eigenentwicklung ist, dann speicher doch einfach beim Programmstart die Startzeit (dann brauchst Du dafür keine Tabelle o.ä. auslesen). In der zeitkritischen Routine prüfst Du einfach die aktuelle Laufzeit, z.B. in der zentralen Loop o.ä.. Ist die maximale Laufzeit überschritten kannst Du durch eine Fehlermeldung den Job abbrechen. Bei Bedarf kannst Du ja vor Ausgabe der Fehlermeldung einen neuen Job einplanen (JOB_OPEN, JOB_SUBMIT, JOB_CLOSE).

MfG
Thomas R.

Beitrag von Thomas R. (Expert / 695 / 43 / 27 ) » 19.05.2006 10:45

Doppelpost wegen PHP-Fehler.
Zuletzt geändert von Thomas R. am 19.05.2006 10:48, insgesamt 1-mal geändert.

Re: Job automatisch abbrechen lassen?

Beitrag von sapauto (ForumUser / 1 / 0 / 0 ) » 28.01.2020 15:15

Hallo,

ich möchte gerne jobgesteuert einen anderen Job abbrechen - sofern er noch läuft.
Entweder suche ich falsch oder das Thema gibt es nicht, jedenfalls finde ich hierzu nichts.

Gesucht wird also eine Möglichkeit ein Kommando wie <killall facercognition> in einem Job umzusetzen.

Gibt es da einen passablen Weg?

Gruß
sapauto

Re: Job automatisch abbrechen lassen?

Beitrag von A6272 (Specialist / 136 / 1 / 14 ) » 28.01.2020 16:10

Hallo,

die Funktionsgruppe BTCH Background Processing würde ich mal durchsuchen.

BP_JOB_SELECT_SM37C Erweiterte Jobauswahl
BP_JOB_ABORT Einen Job, der sich im Status 'aktiv' befindet, abbrechen

Und damit einen Entsprechenden Report erstellen.

Re: Job automatisch abbrechen lassen?

Beitrag von jocoder (Specialist / 149 / 2 / 37 ) » 29.01.2020 08:52

Warum versucht ihr nicht die Ursache zu beheben, damit der Job nicht mehr so lange läuft?
Der gewaltsame Abbruch ist denkbar schlechteste Lösung.
Schreibt der Job vor dem gewaltsamen Abbruch noch Daten in Datenbank, ist der Endzustand immer undefiniert. Hier können Inkonsistenzen, unvollständige Buchungssätze (Hinweis 1223994) entstehen.

Re: Job automatisch abbrechen lassen?

Beitrag von Tron (Top Expert / 1129 / 18 / 250 ) » 29.01.2020 08:56

Moin.
Ich würde auch sagen, das man erstmal den Grund suchen sollte.
Mein Vorschlag: über Transaktion SM50 den Batch Prozess suchen und sich mit dem Debugger (über Menü) einschalten.
gruß Jens
<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Re: Job automatisch abbrechen lassen?

Beitrag von SaskuAc (Specialist / 320 / 37 / 43 ) » 29.01.2020 09:29

Es kann schon möglichkeiten geben, wieso man einen Job Hart abbrechen möchte. wir haben z. b. einen monatlichen Löschjob, der, wenn wir ihn lassen würden, auch mal 72 Stunden laufen würde... - nur ist es für uns kein Problem, ihn auch zwischendurch abzubrechen und dann bei der nächsten Löschung dort fort zu fahren wo wir davor waren. ( einmal im Jahr läuft der dann komplett durch, sodass wir wieder ein bereinigtes System haben )

Wenn ein Job läuft, kann der schon mal, je nachdem was er machen soll, ein System so doll beanspruchen, dass man keine andere Möglichkeit hat, als ihn irgendwann zu killen.
Wenn z. b. unser löschjob läuft, kann niemand mehr das System benutzen, weil die zu löschenden Daten so zentral sind, dass man sonst nichts mehr machen kann.

Man muss halt nur den Report so schreiben, dass es kein Problem ist, den auch abzubrechen, ohne dass man dann inkosistente Daten hat.


Nichtsdestotrotz sollte man, in diesem Fall, schauen warum er zu so einem langläufer wird - es gibt da ein paar, aber nicht unendlich viele, Möglichkeiten.
Alle schleifen überprüfen ( sind geschachtelte schleifen dabei? )
Alle Selects überprüfen ( Select - Endselect unbedingt vermeiden - ist zwar praktisch für die Entwicklung, für die Laufzeit aber unglaublich schlecht )
Alle Selects mit for all entries überprüfen! ( wenn die tabelle leer ist, werden Alle einträge der DB-Tabelle gelesen und die where Bedingungen, natürlich, ignoriert. )
Viele Commits / Rollbacks in einem Report?
Tiefe Tabellen möglichst vermeiden ( heißt, dass tabellen in einer Tabelle sind )
Exceptions können auch noch zur laufzeit beitragen... heißt wenn ihr 100.000 Exceptions werft ( und ja, ich habe schon gesehen wie für ein Objekt Exception Ketten angelegt worden sind... was kein Problem ansich ist, bloß wenn man dann diese Ketten für 30.000 einträge macht wird die Laufzeit unerträglich... )

Und so weiter.
Gibt einiges was bei der Performance beachtet werden sollte und hier eventuell eine Rolle spielt.
Und auch wenn es Sinn macht Jobs abzubrechen - zumindest in einigen Fällen - sollte man, speziell in deinem Fall, erstmal schauen ob man das Problem irgendwie beheben kann...

Seite 1 von 1