Header

Hola, hace unas semanas me topé con un issue reportado en un cliente, en donde el cliente tiene un sistema de registro de evaluaciones realizada con un formulario InfoPath personalizado, adicionalmente la aplicación es muy concurrida por muchos usuarios en hora punta.

El error reportado fue el siguiente: “A Microsoft SharePoint Server State Service error ocurred while processing your request”

image

Debemos de tener en cuenta que:

  • Los formularios inpath trabajan de la mano con el servicio de estado de la plataforma, así como los componentes chart webparts y visio services. 
  • Sin este servicio no se tendría el funcionamiento de los servicios mencionados.

Así que lo primero que ustedes deben de verificar es lo siguiente:

  • Verificar que el servicio de estado se encuentra configurado y ejecutándose.
  • Verificar si existe espacio disponible en su servidor de base de datos.
  • Si es así, verificar que el servicio se encuentre asociado a la aplicación web en donde reside la solución.
  • Sobre el último punto, debes de verificar si hay más de un servicio de estado asociado a la aplicación web, esto puede estar causando conflicto en el almacenamiento del estado, al no usar un servicio de estado asociado a una aplicación web.
    (Ojo: Puedes tener más de un servicio de estado, pero para el uso en diferentes aplicaciones web).

Si todo lo anterior está como corresponde, podemos entonces estar ante una situación de que nuestra solución InfoPath ante un escenario de alta concurrencia de usuarios presenta errores en la carga y/o en el servicio de estado, tal como lo muestra la imagen anterior.

Recomendación:

  • Recomiendo realizar una adecuada distribución de los servicios a través de las aplicaciones web de nuestra plataforma SharePoint. Una mala práctica que he visto en muchas implementaciones es que se asocia todos los servicios por defecto a todas las aplicaciones web.
  • Adicionalmente recomiendo la creación de servicios mediante power shell, ya que cuando se crean mediante “Configuration wizard” tienen configuraciones por defecto, no escalan, además de no asignar un nombre y cuenta de usuarios correspondiente.
  • Escalar : En el caso del servicio de estado, uno puede escalar su capacidad agregando uno o más base de datos de estado asociado a un solo servicio, y este asociado a su aplicación web correspondiente.

Resolución:

  1. Desasociar el servicio de estado actual de la aplicación web (No eliminarlo).
  2. Crear un nuevo servicio de estado mediante power shell
    • Debemos de abrir la consola de comandos de power shell de SharePoint (modo admin)
    • digitar: $serviceApp = New-SPStateServiceApplication -Name «<StateServiceName>»
  3. Ahora debemos de crear al menos una base de datos de estado a nuestro servicio
    • New-SPStateServiceDatabase -Name «<StateServiceDatabase1>» -ServiceApplication $serviceApp
  4. ESCALAR : Puedes agregar más base de datos de estado para tu servicio con lo cual aumentas la capacidad para la ejecución de formularios
    • New-SPStateServiceDatabase -Name «<StateServiceDatabase2>» -ServiceApplication $serviceApp
    • New-SPStateServiceDatabase -Name «<StateServiceDatabase3>» -ServiceApplication $serviceApp
  5. Luego ahora tenemos que asociar nuestro servicio de estado a un “Application Proxy” el cual vamos a poder utilizarlo para asociarlo a una aplicación web. 
    • New-SPStateServiceApplicationProxy -Name «<ApplicationProxyName>» -ServiceApplication $serviceApp
  6. Ahora que ya tenemos un servicio de estado, podemos asociarlo nuevamente a nuestra aplicación web en donde se encuentra nuestra solución Infopath.
    • En este punto cabe resaltar que nuestra aplicación web utilizará un grupo de aplicaciones de servicio personalizado, es decir no usará aquellos servicios que no necesite, por ejemplo performance point, excel services, etc.
    • Ahora tenemos dos servicios de estados, el primero para que pueda ser utilizado por otras aplicaciones web (intranet, sitios, etc)
    • Y el nuevo, para que sea utilizado exclusivamente por nuestra solución, además de ser un servicio con alta capacidad

Dejo este enlace como referencia a como configurar de manera correcta y escalable el servicio de estado https://technet.microsoft.com/en-us/library/ee704548(v=office.14).aspx 

Resumen de la configuración realizada:

Aquí podemos ver el escenario anterior en donde se comparten todos los servicios para todas las aplicaciones lo cual no es la mejor práctica y no escala, en la otra imagen se muestra una separación de aplicaciones de servicio adicionalmente el servicio de estado exclusivo y escalable:

 

clip_image001

 

Cualquier consulta me dejan su comentario.

A %d blogueros les gusta esto: