Crecimiento estatal ilimitado - Managed Service para Apache Flink

Amazon Managed Service para Apache Flink Amazon se denominaba anteriormente Amazon Kinesis Data Analytics para Apache Flink.

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.

Crecimiento estatal ilimitado

Si su aplicación no elimina adecuadamente la información de estado desactualizada, esta se acumulará continuamente y provocará problemas de rendimiento o estabilidad de la aplicación. En esta sección se describen los síntomas y los pasos para solucionar esta condición.

Síntomas

Esta condición puede tener los siguientes síntomas:

  • La métrica lastCheckpointDuration está aumentando o teniendo picos gradualmente.

  • La métrica lastCheckpointSize está aumentando o teniendo picos gradualmente.

Causas y soluciones

Las siguientes condiciones pueden provocar que su aplicación acumule datos de estado:

  • Su aplicación retiene los datos de estado por más tiempo del necesario.

  • Su aplicación utiliza consultas de ventana con una duración demasiado larga.

  • No configuró el TTL para sus datos de estado. Para obtener más información, consulte State Time-to-Live (TTL) en la documentación de Apache Flink.

  • Está ejecutando una aplicación que depende de la versión 2.25.0 o posterior de Apache Beam. Puede excluirse de la nueva versión de la transformación de lectura ampliando la suya BeamApplicationProperties con los experimentos y valores clave. use_deprecated_read Para obtener más información, consulte la documentación de Apache Beam.

A veces, las aplicaciones se enfrentan a un crecimiento cada vez mayor del tamaño de estado, lo que no es sostenible a largo plazo (al fin y al cabo, una aplicación de Flink se ejecuta indefinidamente). A veces, esto se debe a que las aplicaciones almacenan los datos en estado y no conservan adecuadamente la información antigua. Pero a veces hay expectativas irrazonables sobre lo que Flink puede ofrecer. Las aplicaciones pueden usar agregaciones durante largos períodos de tiempo que abarcan días o incluso semanas. A menos que AggregateFunctionsse utilicen, que permiten agregaciones incrementales, Flink debe mantener en estado actualizado los eventos de toda la ventana.

Además, al utilizar funciones de proceso para implementar operadores personalizados, la aplicación debe eliminar los datos del estado que ya no son necesarios para la lógica de negocios. En ese caso, el estado se time-to-live puede utilizar para anticuar automáticamente los datos en función del tiempo de procesamiento. Managed Service para Apache Flink utiliza puntos de control incrementales y, por lo tanto, el ttl del estado se basa en la compactación de RockSDB. Solo se puede observar una reducción real en el tamaño del estado (indicada por el tamaño del punto de control) después de una operación de compactación. En concreto, en el caso de los puntos de control con un tamaño inferior a 200 MB, es poco probable que se observe una reducción en el tamaño de los puntos de control como consecuencia de la caducidad del estado. Sin embargo, los puntos de guardado se basan en una copia limpia del estado que no contiene datos antiguos, por lo que puede activar una instantánea en Managed Service para Apache Flink para forzar la eliminación del estado obsoleto.

Con fines de depuración, puede resultar útil desactivar los puntos de control incrementales para comprobar con mayor rapidez si el tamaño de los puntos de control realmente disminuye o se estabiliza (y evitar así el efecto de compactación en RocksBS). Sin embargo, esto requiere una solicitud de asistencia con el equipo de servicio.