Como solucionar problemas al ejecutar servicios con el Wrapper en Windows

Compatibilidad :1.0.0
Ediciones :Edición ProfesionaEdición EstándarEdición de la Comunidad
Plataformas :WindowsMac OSX (No Soportado)Linux (No Soportado)IBM AIX (No Soportado)FreeBSD (No Soportado)HP-UX (No Soportado)Solaris (No Soportado)IBM z/OS (No Soportado)IBM z/Linux (No Soportado)

Al instalar e iniciar servicios ejecutados con el Wrapper, puede llegar a un punto en el que parece que ya no será posible iniciar ningún servicio adicional.

Las indicaciones habituales para esto son:

  • Iniciar la aplicación produce casi instantáneamente un tiempo de espera: "Error 1053: el servicio no respondió a la solicitud de inicio o control de manera oportuna".

  • El Servicio se inicia, pero la JVM sale instantáneamente con el código de salida 6 (debido a la falla al cargar dlls internos).

  • El Servicio se inicia, pero no puede asignar una consola.

Cada servicio está asignando una cierta cantidad de memoria del espacio de almacenamiento dinámico interno del escritorio utilizado para almacenar cosas como elementos API, etc. Puede encontrar una descripción detallada del espacio de almacenamiento dinámico de escritorio interno en el sitio externo. Si el servicio se lanza como un Servicio no-interactivo, en un equipo 32-bit Windows XP, el espacio de almacenamiento dinámico es de 512KB. El Wrapper mismo está asignando alrededor de 10-15 KB para cada instancia, al iniciar. Cada máquina JVM también asignará en torno de 20KB. Sin embargo, este valor puede variar según los elementos de la API que la JVM está cargando. Si el espacio de almacenamiento dinámico se agota cuando se intenta iniciar el servicio, los errores anteriores pueden ser la consecuencia.

El espacio de almacenamiento dinámico de escritorio puede diagnosticarse con la herramienta Desktop Heap Monitor proporcionada por Microsoft. Después de la instalación y configuración, la salida de registros será como lo siguiente:

dheapmon.exe
Desktop Heap Information Monitor Tool (Version 8.1.2925.0)
Copyright (c) Microsoft Corporation.  All rights reserved.
-------------------------------------------------------------
  Session ID:    0 Total Desktop: (  5824 KB -    7 desktops)

  WinStation\Desktop            Heap Size(KB)    Used Rate(%)
-------------------------------------------------------------
  WinSta0\Default                    3072              8.2
  WinSta0\Disconnect                   64              4.5
  WinSta0\Winlogon                    128              9.8
  Service-0x0-3e7$\Default            512             28.8
  Service-0x0-3e4$\Default            512              2.1
  Service-0x0-3e5$\Default            512              3.1
  SAWinSta\SADesktop                 1024              0.3
-------------------------------------------------------------

Los Servicios no-interactivos, que se ejecutan como un usuario del Sistema, pertenecen en este caso a Service-0x0-3e7$\Default. Iniciar más servicios no-interactivos (ejecutar como usuario del sistema) aumentará el uso del almacenamiento dinámico en consecuencia. Ejecutar el servicio como un servicio interactivo bajo una cierta cuenta de usuario creará una nueva sesión WinStation\Desktop para el proceso. Cualquier servicio que se ejecute como este usuario recibirá su propia sesión.

Actualmente hay 2 soluciones disponibles:

  • Ejecutar como cierta cuenta de usuario de servicio. Cada Servicio que se ejecute recibirá una propia sesión de hasta 48 MB, lo que es disponible globalmente en máquinas de 32 bits.

  • Aumentar el espacio de almacenamiento dinámico de escritorio no interactivo en la máquina local siguiendo las instrucciones en el sitio de Microsoft.

Un Windows de 64 bits tiene un espacio de almacenamiento dinámico de escritorio significativamente más grande y, por lo tanto, necesita que se ejecuten muchos más servicios al mismo tiempo para alcanzar el límite.