IBM i (OS/400) und temporäre Ports

IBM i (OS/400) und temporäre Ports

Wir haben eine benutzerdefinierte Anwendung im Haus, bei der ein großer Pool von Windows-Clients auf einen Imaging-Dienst auf IBM i (AS/400) mit V5R4 zugreift. Gelegentlich können die Clients bei hoher CPU-Auslastung keine TCP/IP-Verbindung herstellen. Da IBM i für mich ein wenig fremd ist, blieb mir nichts anderes übrig, als Parallelen zu anderen Betriebssystemen zu ziehen, hauptsächlich *NIX und Windows. Beide haben ein Konzept und eine Verwendung von temporären Ports, über die die Verbindung zum Client hergestellt wird. Bei dem anderen Betriebssystem variiert die Größe des Verbindungspools von ungefähr viertausend bis vierundsechzigtausend. Ich fragte mich, nachdem ich gelesen hattedieses Handbuch, ob IBM i auch die Konfiguration flüchtiger Portbereiche unterstützt oder ob standardmäßig der gesamte IP-Pool von 1024 bis 65535 verwendet wird?

Antwort1

Soweit ich weiß, nutzen IBM i und seine Vorgänger den gesamten Portbereich von 1024 bis 65535.

Ist der Imaging-Dienst auch intern geschrieben? Oder handelt es sich um eine Anbieter-App?

Viele native IBM i-Anwendungen verwenden separate Prozesse (Jobs genannt) anstelle eines einzelnen Multithread-Prozesses, um die Client-Server-Aktivität abzuwickeln. Da das Starten eines neuen Prozesses relativ teuer ist, besteht die Standardpraxis darin, einen Pool verfügbarer „vorgestarteter“ Jobs zu haben, die darauf warten, Anfragen zu verarbeiten. Wenn jedoch viele Verbindungsanfragen gleichzeitig eingehen, kann es sein, dass die Verbindung verzögert wird, während neue Jobs gestartet werden. Es ist auch möglich, die Gesamtzahl der gleichzeitig verwendeten Verbindungen zu begrenzen.

Sehen wir uns beispielsweise den Job QZDASOINIT an, der ODBC/JDBC/OLEDB-Anfragen verarbeitet.

Dieser Befehl:
DSPACTPJ SBS(QUSRWRK) PGM(QZDASOINIT)

zeigt Ihnen die aktuelle, durchschnittliche und maximale Anzahl der laufenden und verwendeten QZDASOINIT-Jobs an:

 Prestart jobs:         
   Current number . . . 
   Average number . . . 
   Peak number  . . . . 

 Prestart jobs in use:  
   Current number . . . 
   Average number . . . 
   Peak number  . . . . 

Wenn Sie nach unten blättern, wird Ihnen die zweite Seite mit Informationen angezeigt:

Program start requests:                 
  Current number waiting . . . . . . . .
  Average number waiting . . . . . . . .
  Peak number waiting  . . . . . . . . .
  Average wait time  . . . . . . . . . .
  Number accepted  . . . . . . . . . . .
  Number rejected  . . . . . . . . . . .

Pre-Start-Jobs werden über die einem bestimmten Subsystem zugewiesenen „Pre-Start-Job-Einträge“ gesteuert. Mit der folgenden Sequenz gelangen Sie zu „“:
dspsbsd qusrwrk
10. Prestart job entries
5=Display details

Für meinen QZDASOINIT-Eintrag habe ich Folgendes

Initial number of jobs . . . . . . . . . . . . . :   1       
Threshold  . . . . . . . . . . . . . . . . . . . :   1       
Additional number of jobs  . . . . . . . . . . . :   2       
Maximum number of jobs . . . . . . . . . . . . . :   *NOMAX  
Maximum number of uses . . . . . . . . . . . . . :   200     
Wait for job . . . . . . . . . . . . . . . . . . :   *YES

Ausführlichere Informationen finden Sie in der Dokumentation fürOptimieren von Prestart-Jobeinträgen

Antwort2

Es ist nicht das Betriebssystem, das temporäre Ports verwendet, sondern die Anwendung. Das Betriebssystem ist dabei nicht wirklich der entscheidende Faktor. Abgesehen davon hat @Charles eine gute Antwort, um zu verhindern, dass der Server überlastet wird, wenn versucht wird, neue eingehende Anfragen zu planen.

verwandte Informationen