Evitar la latencia al sondear tareas de actividad - AWS Step Functions

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Evitar la latencia al sondear tareas de actividad

La API de GetActivityTask se ha diseñado para proporcionar un taskToken exactamente una vez. Si se descarta un taskToken durante la comunicación con un proceso de trabajo de actividad, se puede bloquear una serie de solicitudes GetActivityTask durante 60 segundos al esperar una respuesta hasta que se agote el tiempo de espera de GetActivityTask.

Si solo tiene un pequeño número de sondeos que esperan una respuesta, es posible que todas las solicitudes se pongan en cola detrás de la solicitud bloqueada y se detengan. Sin embargo, si tiene un gran número de sondeos pendientes para cada Nombre de recurso de Amazon (ARN) de actividad y algún porcentaje de sus solicitudes están bloqueadas esperando, habrá muchas más que todavía pueden obtener un taskToken y comenzar a procesar el trabajo.

Para los sistemas de producción recomendamos al menos 100 sondeos abiertos por ARN de actividad en cada momento. Si se bloquea un sondeo y una parte de los sondeos se ponen en cola detrás de ella, todavía hay muchas más solicitudes que recibirán un taskToken para procesar el trabajo mientras la solicitud GetActivityTask está bloqueada.

Para evitar este tipo de problemas de latencia al sondear las tareas:

  • Implemente los sondeos como subprocesos independientes del trabajo en la implementación del proceso de trabajo de actividad.

  • Tenga al menos 100 sondeos abiertos por ARN de actividad en cada momento.

    nota

    El escalado hasta 100 sondeos abiertos por ARN puede resultar costoso. Por ejemplo, 100 sondeos de funciones de Lambda por ARN resultan 100 veces más costosos que tener una sola función de Lambda con 100 subprocesos de sondeo. Tanto para reducir la latencia como para minimizar el costo, use un lenguaje que tenga E/S asincrónica e implemente varios subprocesos de sondeo por trabajador. Para ver un ejemplo de un proceso de actividad en el que los subprocesos de sondeo están separados de los subprocesos de trabajo, consulte Ejemplo de proceso de trabajo de actividad en Ruby.

Para obtener más información sobre las actividades y los procesos de trabajo de actividad, consulte Actividades.