IBM i (OS/400) y puertos efímeros

IBM i (OS/400) y puertos efímeros

Tenemos una aplicación personalizada interna, donde un gran grupo de clientes de Windows acceden a un servicio de imágenes en IBM i (AS/400) que ejecuta V5R4. En ocasiones, bajo una gran carga de CPU, los clientes no pueden establecer una conexión TCP/IP. Como IBM i me resulta un poco extraño, no tuve otra opción que empezar a establecer paralelismos con otros sistemas operativos, principalmente *NIX y Windows. Ambos tienen un concepto y uso de puertos efímeros, en los que se establece la conexión con el cliente. En el otro sistema operativo, el tamaño del grupo de conexiones varía, desde aproximadamente cuatro mil hasta sesenta y cuatro mil. Me preguntaba, después de leereste manual, ¿Si IBM i también admite la configuración de rango de puertos efímeros o si utiliza todo el grupo de IP de 1024 a 65535 de forma predeterminada?

Respuesta1

Hasta donde yo sé, IBM i y sus predecesores utilizan toda la gama de puertos desde 1024 hasta 65535.

¿El servicio de imágenes también está escrito internamente? ¿O es una aplicación de proveedor?

Muchas aplicaciones nativas de IBM i utilizan procesos separados (conocidos como trabajos) en lugar de un proceso único de subprocesos múltiples para manejar la actividad del servidor cliente. Dado que iniciar un nuevo proceso es relativamente caro, la práctica estándar es tener un conjunto de trabajos "preiniciados" disponibles esperando para procesar las solicitudes. Sin embargo, si llegan muchas solicitudes de conexión a la vez, es posible que la conexión se retrase mientras se inician nuevos trabajos. También es posible limitar el número total de conexiones en uso a la vez.

Por ejemplo, veamos el trabajo QZDASOINIT que maneja solicitudes ODBC/JDBC/OLEDB.

Este comando:
DSPACTPJ SBS(QUSRWRK) PGM(QZDASOINIT)

le mostrará el recuento actual, promedio y máximo de trabajos QZDASOINIT en ejecución y en uso:

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

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

Al bajar la página se mostrará la segunda página de información:

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

Los trabajos previos al inicio se controlan mediante las "entradas de trabajos previos al inicio" asignadas a un subsistema determinado. La siguiente secuencia le llevará al "":
dspsbsd qusrwrk
10. Prestart job entries
5=Display details

Para mi entrada QZDASOINIT, tengo lo siguiente

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

Para obtener información más detallada, consulte la documentación deajuste de entradas de trabajos de prearranque

Respuesta2

No es el sistema operativo el que utiliza puertos efímeros; es la aplicación. El sistema operativo no es realmente el factor determinante. Dicho esto, @Charles tiene una buena respuesta para intentar evitar que el servidor se sobrecargue al intentar programar nuevas solicitudes entrantes.

información relacionada