Estados de los desencadenadores
En FlowForce Server, un desencadenador puede encontrarse en uno de estos dos estados:
•Funcionamiento normal: el desencadenador se ejecuta según lo programado y sin saltarse ninguna tarea.
•Pendiente: el desencadenador no se activa a la hora prevista debido a la falta de huecos de ejecución (siga leyendo para obtener más información).
Desencadenadores pendientes
Un desencadenador se considera pendiente cuando no se ejecuta en el momento programado porque no hay huecos de ejecución disponibles. Cuando un disparador queda pendiente, no se apilan las ejecuciones no realizadas. Por el contrario, se espera al siguiente hueco de ejecución disponible.
Cómo se gestionan los diferentes desencadenadores cuando se quedan pendientes
Un desencadenador sigue pendiente hasta que puede realizar su siguiente tarea principal. El comportamiento varía según el tipo de desencadenador.
Temporizadores
En el caso de un temporizador, la tarea principal es ejecutarse a una hora programada. Si pasa esa hora y no hay huecos de ejecución disponibles para ejecutar la tarea, el desencadenador se considera pendiente. El desencadenador no intenta ejecutarse varias veces, ya que esto empeoraría el problema. Lo que hace es esperar hasta que queda libre un hueco de ejecución.
Sin embargo, aunque haya un hueco disponible, puede que el desencadenador no lo consiga inmediatamente. Las tareas de mayor prioridad (como una solicitud de servicio o un desencadenador de mayor prioridad) pueden tener preferencia. Si hay varios desencadenadores con la misma prioridad en espera, el sistema utiliza reglas internas para determinar cuál consigue el hueco de ejecución.
Desencadenadores de sistema de archivos
En el caso de un desencadenador de sistema de archivos, la tarea principal es analizar un directorio en busca de cambios. El comportamiento de los desencadenadores de sistema de archivos es el mismo que el de los temporizadores. Sin embargo, un desencadenador de sistema de archivos puede tener que procesar más de un trabajo: Cuando se analiza el directorio, el desencadenador puede encontrar cero, uno o varios elementos para procesar.
•Si el desencadenador no encuentra ningún elemento, el hueco de ejecución se libera inmediatamente y otros desencadenadores pueden competir por ese hueco.
•Si el desencadenador encuentra un elemento, se le asigna el hueco de ejecución para procesar ese archivo.
•Si el desencadenador encuentra varios elementos, no los procesa todos en el mismo hueco de ejecución, ya que esto sería ineficaz. Lo que hace el sistema es crear múltiples instancias del desencadenador , cada una de las cuales espera su propio hueco de ejecución para procesar un elemento. Una vez procesado un elemento, se elimina la instancia correspondiente. Esto continúa hasta que solo queda una instancia, que entonces puede realizar el siguiente sondeo del directorio.
Desencadenadores HTTP
Los desencadenadores HTTP supervisan los cambios en una URL comprobando periódicamente sus encabezados Last-Modified o Content-MD5. Al igual que otros desencadenadores, los desencadenadores HTTP pueden quedar pendientes en determinadas circunstancias:
•Si la recuperación del recurso tarda más tiempo que el intervalo de comprobación configurado.
•Si no hay ningún hueco de ejecución disponible cuando el desencadenador intenta ejecutarse.
A diferencia de los desencadenadores de sistema de archivos, los desencadenadores HTTP supervisan una sola URL (no todo un directorio) y no se replican. Sin embargo, el comportamiento de los desencadenadores HTTP que están pendientes es parecido: el desencadenador espera hasta que los recursos estén libres y no se ponen en cola más comprobaciones durante este tiempo.
Ejemplo
Por ejemplo, si configura un desencadenador de sistema de archivos para analizar un directorio cada 30 segundos, pero los trabajos que desencadena tardan 10 minutos en completarse, el desencadenador quedará pendiente tan pronto como se ocupen todos los huecos de ejecución. Esto ocurre porque el desencadenador no puede volver a analizar el directorio en busca de nuevos archivos mientras estén ocupados todos los huecos de ejecución. Aunque pudiera detectar archivos nuevos, no podría procesarlos inmediatamente debido a la falta de huecos disponibles.
Cuando queden huecos libres, el desencadenador reanudará el sondeo, pero sigue estando pendiente porque no ha cumplido con el tiempo de sondeo programado. Este comportamiento es intencionado, ya que intentar procesar todo inmediatamente reduciría la eficiencia general del sistema y aumentaría los retrasos.
Los desencadenadores pendientes no son necesariamente un indicio de problemas. En cambio, indican que el sistema no ha podido ocuparse de un trabajo debido a limitaciones de recursos.
Soluciones posibles
Si los desencadenadores quedan pendientes con demasiada frecuencia, esto podría indicar que el servidor está sobrecargado. Evalúe las siguientes sugerencias:
•Reduzca la frecuencia de sondeo para que coincida con la duración de los trabajos: si un trabajo tarda 10 minutos, no es necesario analizar cada 30 segundos. Por lo tanto, debe aumentar el intervalo de sondeo (por ejemplo, 5 minutos) para ajustarse mejor a los tiempos de finalización de los trabajos.
•Aumente el número de huecos de ejecución: Si es posible, asigne más huecos de ejecución para reducir los tiempos de espera de los desencadenadores.
•Ajuste los plazos: deje tiempo entre los desencadenadores para que no se inicien todos al mismo tiempo. Esto permitirá reducir la competencia por los huecos de ejecución.
•Optimice los tiempos de ejecución de los trabajos: esto mejora la eficiencia de los trabajos para liberar huecos antes.
•Amplíe los recursos del servidor: añada más CPU, memoria o huecos de ejecución para gestionar cargas de trabajo más elevadas.