Der ICM und Web Dispatcher kennen verschiedene Timeouts, die durch Profilparameter gesteuert werden:
Timeout beim Verbindungsaufbau: icm/conn_timeout
Timeout beim Empfangen eines Requests: icm/traffic_control
Keepalive-Timeout für die Netzwerkverbindung: icm/server_port_<xx>- Option TIMEOUT und icm/keep_alive_timeout
Bearbeitungs-Timeout im Backend: icm/server_port_<xx>- Option PROCTIMEOUT
Die hier beschriebenen Timeouts gelten nur für HTTP(S), nicht für die anderen Protokolle (P4, IIOP, etc).
Timeout beim Verbindungsaufbau: Parameter icm/conn_timeout
Dieser Parameter dient der Einstellung des Timeout beim Aufbau der Verbindung. Wenn er überschritten wird, wird standardmäßig eine Fehlerseite mit der Information "404 Resource not found: Partner not reached" angezeigt.
Eine Überschreitung dieses Timeouts führt also nicht zu einer Fehlermeldung "500 Connection timed out".
Netzwerk-Timeout: Parameter icm/traffic_control
Mit diesem Parameter steuern Sie den Netzwerk-Timeout während eines Requests: wenn der Request noch nicht komplett übermittelt ist und diese Zeitspanne verstreicht, ohne dass Daten über das Netz gesendet werden, wird die Verbindung geschlossen.
Keepalive-Timeout: Option TIMEOUT bzw. Profilparameter icm/keepalive_timeout
Der Keepalive-Timeout gibt an, wie lange nach der erfolgreichen Bearbeitung eines Requests die Netzwerkverbindung erhalten bleiben soll, damit bei eventuell eintreffenden weiteren Requests der TCP/IP Verbindungsaufbau nicht mehr nötig ist.
Der Keepalive-Timeout kann global für alle Services des ICM durch den Parameter icm/keep_alive_timeout angegeben werden. Er kann auch für einzelne Services durch den Parameter icm/server_port_ <xx>= ...,TIMEOUT= <s> angegeben werden. Dieser übersteuert dann für den angegebenen Service den Parameter icm/keep_alive_timeout.
Der Keepalive-Timeout sollte so hoch eingestellt sein, dass bei kurz aufeinander folgenden Anfragen kein erneuter Verbindungsaufbau erfolgt, aber auch so niedrig, dass keine unnötig hohe Zahl an ungenutzten TCP/IP Verbindungen bestehen bleibt.
Der Zeitraum wird beim Parameter icm/server_port_ <xx> mit der Option TIMEOUT (in Sekunden) angegeben.
Der Wert -1 deaktiviert den Timeout.
Ist die Option TIMEOUT nicht gesetzt, wird der Wert durch den Parameter icm/keep_alive_timeout festgelegt.
Wertebereich |
Einheit |
Standardeinstellung |
---|---|---|
-1, 0, 10 - 32000 |
Sekunden |
60 |
Das Zeitlimit gilt für folgende Fälle:
Die Zeit zwischen dem Erhalt von TCP-Paketen bei Anfragen
Die Zeit zwischen den Bestätigungen von TCP-Paketen, die als Antwort vom Server geschickt werden.
Je nach Netzwerkanbindung (intern, LAN, WAN) kann es sinnvoll sein, diesen Parameterwert zu erhöhen, jedoch sollte der Wert nicht kleiner als 10 Sekunden sein. Bei einem zu hoch eingestelltem Parameterwert kann der Durchsatz des Servers durch extrem langsame Netzwerkverbindungen deutlich sinken.
Requests an den AS ABAP: Beachten Sie, dass nach Ablauf dieser Zeitspanne nicht der Benutzerkontext im Workprozess abgebaut wird! Dies geschieht nach Ablauf der Zeitspanne, die durch den Profilparameter rdisp/plugin_auto_logout festgelegt wird. Wird rdisp/plugin_auto_logout = 0 gesetzt, so wird der Kontext im Workprozess gar nicht gelöscht.
Bearbeitungs-Timeout: Option PROCTIMEOUT
Der Verarbeitungs-Timeout gibt den Timeout zwischen dem Abschicken eines HTTP-Requests und dem Erhalt einer HTTP-Response an.
ICM als HTTP-Server: Wenn der ICM einen Request bekommen und zur Bearbeitung weitergegeben hat (an den AS ABAP oder den AS Java), wartet er solange auf die Antwort vom Server, bis dieser Timeout abgelaufen ist. Der Kontext im Workprozess wird dann abgebaut, der Client bekommt einen Connection Timeout gemeldet (Fehler ETIMEOUT, vgl. Fehlerbehandlung).
ICM als HTTP-Client: Wenn der ICM für den betreffenden HTTP-Request als Client dient, also eine ausgehende Anfrage des SAP NetWeaver AS weiterleitet, dann gibt der Bearbeitungs-Timeout die Zeit an, die ICM wartet, bis eine Antwort aus dem Netz erhalten wird. Diese kann ebenfalls bei langlaufenden Anwendungen im Netz überschritten werden.
Der Wert wird mit dem Parameterwert <proctimeout> in Sekunden angegeben, der Wert -1 deaktiviert den Timeout.
Wertebereich |
Einheit |
Standardeinstellung |
---|---|---|
-1, 1 - 32000 |
Sekunden |
Abhängig von Systemtyp:
|
Wenn der Parameter PROCTIMEOUT nicht angegeben wird, definiert TIMEOUT (oder icm/keepalive_timeout) sowohl den Verarbeitungs-Timeout als auch den Keepalive-Timeout. Zudem wird dann der Keepalive-Timeout auf maximal 60 Sekunden begrenzt.
In einem System, wo die Timeout-Standardeinstellungen von 60 Sekunden für den Keepalive-Timeout und für den Bearbeitungs-Timeout wegen langlaufender Anwendungen nicht ausreichen, empfiehlt SAP, an den betroffenen Services beide Parameter TIMEOUT und PROCTIMEOUT zu setzen, damit sie unabhängig voneinander konfigurierbar sind. Außerdem sollte der TIMEOUT-Wert nicht unnötig hoch sein.
Wir empfehlen beispielsweise folgende Einstellung:
icm/server_port_0 = PROT=HTTP,PORT=1080,TIMEOUT=60,PROCTIMEOUT=600
um eine maximale Verarbeitungszeit von 10 Minuten zuzulassen.
Timeout-Parameter im SAP Web Dispatcher
Für den SAP Web Dispatcher stehen die gleichen Timeout-Parameter zur Verfügung wie für den ICM. Sie können in der Profildatei des SAP Web Dispatcher geändert werden (z.B. sapwebdisp.pfl).
Es wird empfohlen, die Parameter in SAP Web Dispatcher und ICM identisch zu setzen.
Ausnahme: Sie haben im Web Dispatcher Connection Pooling konfiguriert durch wdisp/HTTP/use_pool_for_new_conn = 1.
Troubleshooting
Hinweis 824554 liefert eine ausführliche Beschreibung der Timeouts und der Konfiguration.