jueves, marzo 05, 2009

Timeouts en escenarios síncronos

Existen ocaciones en las que los programas que utilizamos pueden tardar mucho en función de la cantidad de datos que le vayamos a pedir. Esto puede dar lugar a que si nos encontramos en un escenario síncrono podamos obtener un timeout como respuesta.


500 Connection timed out


Error: -5
Version: 7000
Component: ICM
Date/Time: Thu Mar 5 09:57:12 2009
Module: icxxthr_mt.c
Line: 2698
Server: PI_Server
Error Tag: {-}
Detail: Connection to partner timed out after 60s
© 2001-2005, SAP AG

En mi caso, el escenario en el que se producía el error era de tipo síncrono (SOAP -> RFC). Y el timeout aparecía cuando la función tenía que recopilar demasiados datos.

En la transacción SM21 aparece una versión más detallada del error:

http_rfc-session-has-been-deleted-following-timeout

Una de las maneras de ampliar el tiempo de timeout es a través de la transacción SMICM. En el menú Pasar a -> Servicios (Shift+F1) veremos que el tiempo definido para el servicio HTTP es de 60 segundos, por lo que bastará marcar dicho servicio y editarlo (menú Servicio -> Modificar) para asignarle el tiempo que deseemos.

servicios3

NOTA: Hay que tener en cuenta que estos cambios se perderán si se reinicia el servicio ICM, tal como notifica el siguiente mensaje:

warning

Una de las opciones posibles para definir de manera definitiva esta parametrización es por medio de la creación del parámetro de perfil icm/server_port_<xx> a través de la transacción RZ10. Ejemplo:

icm/server_port_0 = PROT=HTTP,PORT=8000,TIMEOUT=30,PROCTIMEOUT=600

Los posibles valores vienen descritos en el link Timeout Options for ICM and Web Dispatcher.

Este parámetro se debe incluir en un fichero del sistema, por lo que deberá ser un administrador el que realice la configuración.

Links de referencia:

    No hay comentarios: