Administration -> Systemverwaltung -> Monitor -> Systemüberwachung -> Prozessübersicht

Viele werden bereits mit der Transaktion SM37 gearbeitet haben, um sich einen Überblick in Bezug auf aktive/freigegebene oder anderweitig eingeplante Jobs zu verschaffen. Besonders bei Hintergrundprozessen die lange laufen und viel Verarbeiten, hat man nicht immer den perfekten Überblick, wenn es um die Laufzeit oder den detaillierten Status von Hintergrundprozessen geht. Man sieht lediglich, ob ein Job läuft, eingeplant, freigegeben oder abgeschlossen ist. Manchmal ist das allerdings zu ungenau. Dann ist es hilfreich die Transaktion SM50 aufzurufen. Die Transaktion ermöglicht es beispielsweise, sich genauere Informationen zu den laufenden Hintergrundprozessen einholen zu können. Das ist aber nur eine Funktion der SM50. Auf diese und viele weitere soll in diesem Blogbeitrag eingegangen werden.

 

Ein grober Überblick:

Gibt man die Transaktion SM50 ein, so wird der Report „RSMON000_ALV_NEW“ im Hintergrund ausgeführt, um eine Liste mit allen „Work-Processes“ also Arbeits-Prozessen anzeigen zu lassen. Man sieht den aktuellen Zustand der Workprozesse auf dem eigenen Applikationsserver.Zusammen mit dem Arbeits-Prozess-Typ, einer Prozess-ID, dem zugehörigen Status sowie dem ausführenden User, kann man sich außerdem Informationen zur allgemeinen Priorität aller Prozesse anschauen. Weiterhin werden neben den aktuell ausgeführten Programmen auch die vergangene CPU-Zeit zu diesen Prozessen und eine zugehörige Priorisierungsstufe eingeblendet.

Im oberen Bereich (rot) finden wir unser übliches, um einige nützliche Funktionen erweiterte Werkzeugleiste. Der blaue Bereich markiert besetzte bzw. freie Arbeitsprozesse und ordnet diese nach ihrer Art und Weise. Der Bereich ganz unten (gelb), zeigt uns alle Arbeitsprozesse an. Auf diesen Bereich soll als Erstes eingegangen werden:

 

Dafür werden nun relevante Spalten der Tabelle näher erläutert.

 

Typ:

Der Typ zeigt auf um welche Art von Prozess es sich handelt.

  • DIA: Arbeitsprozess zum Ausführen von User-gebundenen Transaktionen
  • UPD: Update Prozesse in Bezug auf Veränderungen von Datenbanken (zeitkritisch)
  • UP2: Update Prozesse in Bezug auf Veränderungen von Datenbanken (zeitlich unkritisch)
  • ENQ: Prozesse, die auf Objekte entweder ein „Lock“ setzen oder dieses aufheben
  • BTC: Hintergrundprozesse
  • SPO: Spool Prozesse

 

Prozess-ID:

Die Prozess-ID ist dann wichtig, wenn man den Arbeitsprozess mit bestimmten Kommandos manipulieren möchte. Dies kommt zum Beispiel unter Anwendung eines UNIX-System zum Einsatz. Mit der ID referenziert man also den entsprechenden Prozess. Auch unser System referenziert beispielsweise fehlgeschlagene Prozesse anhand ihrer ID.

 

WP-Status:

Insgesamt gibt es sechs mögliche Status, in denen sich ein Arbeitsprozess befinden kann:

 

Wartend:

Der Arbeitsprozess ist frei und wartet auf eingehende Aufträge

 

Läuft:

Der Arbeitsprozess bearbeitet gerade einen Auftrag.

 

Hält:

Der Arbeitsprozess wird für einen Benutzer gehalten. Dies kann unter Umständen zum Problem werden. Wenn zu viele Arbeitsprozesse sich in diesem Status befinden, kann dies zu einem Flaschenhals-artigem Problem in der Prozessverarbeitung führen.

 

Beendet:

Im Status beendet wurde der Prozess durch einen Fehler ungeplant beendet.

 

Shutdown:

Der Prozess wurde auf Applikationsserver-Ebene beendet.

 

Standby:

Prozess kommt nur unter besonderen Situationen zum Einsatz (z.Bsp. Aufträge mit hoher Priorität).

Info-Hält:

Gelangt ein Prozess in den Status „gehalten“ oder „hält“, so werden in dieser Zusatzspalte wichtige Informationen zu diesem „gehaltenen“ Zustand angezeigt.

 

Der Vollständigkeit halber sollen nun einige Begrifflichkeiten zu dieser Spalte aufgelistet werden:

 

Async. RFC-Antwort:

Es wird auf eine asynchrone Antwort in einem RFC-Prozess gewartet.

 

Interne Antwort (Gateway)

Der Arbeitsprozess wartet auf die Antwort des Message-Servers

 

Session gelockt

Die Session wurde exklusiv diesem Arbeitsprozess zugeordnet. Damit sind diverse Instanzen dieses Prozesses für andere Prozesse gesperrt.

 

Timeout

Zeit, die verwendet wird, um auf eine asynchrone Antwort zu warten

 

Handshake

Der Prozess wartet auf den nachfolgenden Handschlag (ACK) im entsprechenden Kommunikationsmodell.

WP-Abbr.

Anzahl der abgebrochenen Arbeitsprozesse. Bricht der Prozess mehrmals ab, kann dieses Feld von Bedeutung sein.

Gesp. Sem.

Steht hier für „Gesperrtes Semaphor“.

 

Was ist ein Semaphor? Befindet sich unser System in einem kritischen Arbeitsprozess, wird der Prozess über dieses sog. Semaphor überwacht. Dabei ist ein Semaphor als Wertigkeit zu betrachten die mit Hilfe von Voreinstellungen definiert wird und den Arbeitsprozess so überwachbar gestaltet, ohne ihn durch ständiges Nachfragen zu unterbrechen.

 

In dieser Spalte werden also die Semaphore angezeigt, die ein solcher Arbeitsprozess gerade enthält. Dabei wird das entsprechende Semaphor durch eine Nummer definiert. Hier einige Beispiele:

 

2 ->  Tabellenpuffer Administration

3 -> Tabellenpuffer Shared Memory

50 -> ABAP Shared Objects

Uvm.

Ang. Sem.

Steht hier für „Angefordertes Semphor“. Ist ein Semaphor bereits von einem anderen Arbeitsprozess in Benutzung, so wird es für den Arbeitsprozess, der es noch benötigt in dieser Spalte festgehalten.

Priorität

Arbeitsprozesse können sich bei Bedarf gegenseitig verdrängen. Kommt es also zu einem leistungsbedingten Engpass auf dem SAP-System (wie zum Beispiel durch mehrere Prozesse die „on Hold“ stehen), so ist es möglich, dass ein „Hoch“-priorisierter Arbeitsprozess einen minder priorisierten verdrängen kann.

Dabei gibt es die Prioritäten:

  • Hoch
  • Mittel
  • Niedrig

Programm welches gerade vom WP ausgeführt wird.

In dieser Spalte sehen wir das Programm, welches gerade vom Prozess ausgeführt wird, …

 

Durchschnittsangaben

Kommen wir nun zum nächsten Abschnitt unserer anfänglich gezeigten Abbildung der Transaktion SM50:

An dieser Stelle wird genauer auf die Anzahl der Arbeitsprozesse eingegangen. Wirklich interessant ist dabei die durchschnittliche Last, die sich wie folgt zusammensetzt:

 

Um diesen Abschnitt besser erklären zu können, wandeln wir die aus den im Satz rechts dargestellten Zahlen jeweils in x, y und z. Für uns sähe also das Beispiel nun so aus:

Das bedeutet für uns:

In der letzten Minute waren jeweils x(numerische)-Prozesse dieses Typs voll ausgelastet. y-Prozesse waren in den letzten 5 Minuten voll ausgelastet. Die z-Variable steht für Auslastung der letzten 15 Minuten.

 

(letzte Minute / letzten 5 Minuten / letzten 15 Minuten)

 

Ist keine durchschnittliche Last aufgeführt, wurde dieser Typ Arbeitsprozess in den letzten 15 Minuten nicht beansprucht.

 

Somit kann eine Aussage über die aktuelle Auslastung des Systems treffen. Ist die Zahl der Arbeitsprozesse meinem System angemessen? Gab es einen Anstieg der Last?

 

Gleich zu Beginn bietet einem das Werkzeug-Menü einige vielleicht vertraute Optionen:

Nicht alle dieser Buttons erweisen sich stets als wichtig oder sind teilweise selbsterklärend, weshalb an dieser Stelle nur auf die wenigen relevanten Optionen eingegangen werden soll:

WP-Info-Symbol

Selektiert man einen spezifischen WP-Prozess der SM50 und wählt das WP-Info-Symbol aus, so erhält man detaillierte Informationen zum selektierten Prozess. Zur Detail-Information gelangen wir auch durch einen Doppelklick auf den gewünschten WP (Work-Process). Darauf werden wir noch näher eingehen.

Systemweite Liste-Symbol

Dieses Werkzeug ermöglicht uns das Wechseln in eine neue Ansicht. Dabei bezieht sich die SM50 nun nicht mehr auf eine Systeminstanz bzw. die von uns genutzten Prozesse, sondern auf eine systemweite Auflistung aller Prozesse. Daher ändern sich auch bestimmte Spaltennamen in unserer Darstellung:

Wechselt man also in die neue Ansicht, so kann man einen neuen Spaltennamen erkennen:

 

Application-Server-Instanz

 

Diese Spalte zeigt den Servernamen, der zum entsprechenden Prozess gehört. Die Sicht behandelt also das gesamte SAP-System.

 

Wie versprochen wird nun noch auf die detaillierte Anzeige zum Arbeits-Prozess eingegangen werden.

Dieser Bereich gewährt einen Einblick in die Performance und Bestandteile des Arbeits-Prozesses. Dabei werden die Bereiche „Speicherstatistik“, „DB-Statistik“, diverse „Anwendungsinformationen“ und der „ABAP-Stack“ aufbereitet, visualisiert und als zentrale Instanzen der neu dargestellten Oberfläche aufgezeigt. Um die Übersichtlichkeit zu wahren, wurde auf dem oben dargestellten Bild eben jener Arbeitsprozess ausgewählt, der die Ausführung der SM50 selbst anzeigt. Das lässt sich unter anderem auch am ABAP-Stack erkennen. Im entsprechenden Abschnitt kann man also sehen, dass der weiter oben erwähnte Report hinter der SM50 Transaktion ausgeführt wird.

Weiter rechts im Bild wird näher auf Informationen zum Code eingegangen. Wir können dem ABAP-Stack sämtliche, laufenden Methoden und andere Event-Typen entnehmen. Weiterhin werden auch die zugehörigen ABAP-Klassen zu den Methoden aufgelistet. Die mehrfache Listung des Reportnamens, lässt sich mit den darunterliegenden Methoden/Events erklären, die dem selben Hauptprogramm entspringen.

 

Dabei kann die Speicherstatistik Auskunft über Performanz der Prozesse geben. Somit lassen sich aber auch andere Problemherde weiter eingrenzen. Würden wir beispielsweise einen Prozess ansteuern, der „gehalten“ ist, so könnten wir hier einsehen welcher Code durchlaufen wird. Das kann nützlich sein, um Performanz und Code-Fluss zu beurteilen.

 

Im Anschluss soll näher auf die Interaktion mit den Arbeitsprozessen eingegangen werden.

Die SM50 ermöglicht diverse Operationen:

  • ein laufendes ABAP-Programm beenden
  • ein laufendes ABAP-Programm debuggen
  • einen Prozess abbrechen (mit oder ohne Core)
  • einen Modus beenden
  • die Option Neustart nach Fehler ein- oder ausschalten
  • verschiedene Funktionen zum Prozess-Trace ausführen

 

Einen Arbeitsprozess beenden:

Wie bereits gesagt können wir laufende Programme via SM50 beenden. Diese Option findet sich in der Menüleiste der SM50.

Letztlich stehen wir vor der Wahl zwischen „with Core“ und „without Core“. Ein entscheidender Unterschied ist der folgende:

 

Beenden wir den Prozess „mit Core“, so wird eine sog. „Core File“ erstellt. Diese kann in der ST11 eingesehen und beurteilt werden. Wählen wir die Option „ohne Core“, wird kein „Core File“ erstellt und der Prozess wird einfach beendet. Bevor man Prozesse beendet, sollte man allerdings nicht vergessen, dass manche Arbeitsprozesse unter Umständen in Beziehung zueinanderstehen können.

 

Egal welche Variante wir wählen, wird der WP beendet, so startet der Dispatcher einen neuen WP. Diesem Prozess ist dann auch eine neue PID (Prozess-ID) zugeordnet.

Ein laufendes ABAP-Programm beenden:

Über das Menü und den Pfad:

 

Administration -> Programm -> Debugging

 

Beendet das gesamte darunterliegende Programm (Report). Ein zugehöriger Dump wird erstellt und kann in der Transaktion ST22 eingesehen werden.

Ein laufendes ABAP-Programm debuggen:

Läuft ein Prozess länger als gewünscht, ist es sinnvoll sich den referenzierten Code-Abschnitt näher anzusehen. Bei Auswahl dieser Option, springt der Debugger genau in den Code-Teil, der in diesem Moment durchlaufen wird.

 

Dafür navigiert man über das Menü zu folgendem Pfad:

 

Administration -> Programm -> Debugging

Einen laufenden Modus canceln:

Was ist ein Modus? Unter einem Modus versteht SAP die Instanz einer Oberfläche. Öffnen wir also eine Oberfläche über Transaktion oder Report, so wird ein neuer Modus erstellt. Dabei muss man zwischen der Ausführung der Oberfläche und dem Ausführen des eigentlichen Hintergrundprozesses unterscheiden. Über:

 

Administration -> Modus löschen

 

können entsprechende Modi beendet werden.

Prozessneustart nach fehlerhafter Ausführung:

In der SM50 kann außerdem eingestellt werden, ob der Prozess nach einer fehlerhaften Ausführung neu gestartet werden soll. Dabei wird nicht das darunterliegende Programm neu ausgeführt, sondern lediglich der WP.

 

Administration -> Prozess -> Neustart nach Fehler -> Ja

Administration -> Prozess -> Neustart nach Fehler -> Nein

 

Insgesamt eignet sich die SM50 gut zum einholen diverser Informationen und kann im Notfall dazu benutzt werden fehlerhafte Prozesse zu stoppen.