Utilizza le migliori pratiche in materia di prestazioni - Servizio gestito per Apache Flink

Il servizio gestito da Amazon per Apache Flink era precedentemente noto come Analisi dei dati Amazon Kinesis per Apache Flink.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizza le migliori pratiche in materia di prestazioni

Questa sezione descrive considerazioni particolari relative alla progettazione di un'applicazione che garantisca prestazioni elevate.

Gestire correttamente il dimensionamento

Questa sezione contiene informazioni sulla gestione del dimensionamento a livello di applicazione e di operatore.

Gestire correttamente il dimensionamento dell’applicazione

È possibile utilizzare il dimensionamento automatico per gestire picchi imprevisti nell'attività dell’applicazione. L'applicazione KPUs aumenterà automaticamente se vengono soddisfatti i seguenti criteri:

  • il dimensionamento automatico è abilitato per l'applicazione;

  • CPUl'utilizzo rimane superiore al 75 percento per 15 minuti.

Se la scalabilità automatica è abilitata, ma CPU l'utilizzo non rimane al di sopra di questa soglia, l'applicazione non verrà scalata verso l'alto. KPUs Se si verifica un picco di CPU utilizzo che non soddisfa questa soglia o un picco in una metrica di utilizzo diversa, ad esempioheapMemoryUtilization, aumenta il ridimensionamento manualmente per consentire all'applicazione di gestire i picchi di attività.

Nota

Se l'applicazione ha aggiunto automaticamente più risorse tramite il dimensionamento automatico, l'applicazione rilascerà le nuove risorse dopo un periodo di inattività. Il ridimensionamento delle risorse influirà temporaneamente sulle prestazioni.

Per ulteriori informazioni sul dimensionamento, consulta Implementa la scalabilità delle applicazioni in Managed Service for Apache Flink.

Gestire correttamente il dimensionamento degli operatori

È possibile migliorare le prestazioni dell'applicazione verificando che il carico di lavoro dell'applicazione sia distribuito in modo uniforme tra i processi di lavoro e che gli operatori dell'applicazione dispongano delle risorse di sistema necessarie per garantire stabilità e ottime prestazioni.

È possibile impostare il parallelismo per ogni operatore nel codice dell'applicazione utilizzando l'impostazione parallelism. Nel caso in cui il parallelismo per un operatore non sia impostato, verrà utilizzata l'impostazione del parallelismo a livello di applicazione. Gli operatori che utilizzano l'impostazione del parallelismo a livello di applicazione possono potenzialmente utilizzare tutte le risorse di sistema disponibili per l'applicazione, rendendola poco stabile.

Per determinare al meglio il parallelismo per ogni operatore, è fondamentale considerare i requisiti di risorse relativi dell'operatore rispetto agli altri operatori dell'applicazione. È consigliabile impostare gli operatori che richiedono più risorse su un'impostazione di parallelismo degli operatori più elevata rispetto agli operatori che ne richiedono di meno.

Il parallelismo totale dell'operatore per l'applicazione è la somma del parallelismo per tutti gli operatori dell'applicazione. È possibile ottimizzare il parallelismo totale degli operatori per l'applicazione determinando il migliore rapporto tra tale parallelismo e il totale degli slot di attività disponibili per l'applicazione. Generalmente, un rapporto stabile tra il parallelismo totale dell'operatore e gli slot di attività è 4:1, ovvero l'applicazione ha uno slot di attività disponibile per ogni quattro attività secondarie dell'operatore disponibili. Un'applicazione con operatori che richiedono più risorse può richiedere un rapporto di 3:1 o 2:1, mentre un'applicazione con operatori che richiedono meno risorse può essere stabile anche con un rapporto di 10:1.

È possibile impostare il rapporto per l'operatore utilizzando Usa le proprietà di runtime in Managed Service for Apache Flink, in modo da ottimizzare il parallelismo dell'operatore senza compilare e caricare il codice dell'applicazione.

L'esempio di codice seguente mostra il procedimento per impostare il parallelismo dell'operatore come rapporto regolabile del parallelismo dell'applicazione attuale:

Map<String, Properties> applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties(); operatorParallelism = StreamExecutionEnvironment.getParallelism() / Integer.getInteger( applicationProperties.get("OperatorProperties").getProperty("MyOperatorParallelismRatio") );

Per informazioni sulle attività secondarie, gli slot di attività e altre risorse dell'applicazione, consulta Consulta le risorse dell'applicazione Managed Service for Apache Flink.

Per controllare la distribuzione del carico di lavoro tra i processi di lavoro dell'applicazione, utilizza l'impostazione Parallelism e il metodo di partizioneKeyBy. Per ulteriori informazioni, consulta gli argomenti seguenti nella documentazione Apache Flink:

Monitoraggio dell'utilizzo delle risorse di dipendenza esterne

Se si verifica un problema di prestazioni in una destinazione (come Kinesis Streams, Firehose, DynamoDB o Service), l'applicazione subirà una contropressione. OpenSearch Verifica che le dipendenze esterne siano state predisposte correttamente per la velocità di trasmissione effettiva dell'applicazione.

Nota

I malfunzionamenti in altri servizi possono causare errori all’interno dell'applicazione. Se riscontri errori nell'applicazione, controlla i log dei servizi di destinazione per individuare eventuali errori. CloudWatch

Avviamento dell'applicazione Apache Flink in locale

Per risolvere i problemi di memoria, è consigliabile avviare l'applicazione in un'installazione locale di Flink. In tal modo sarà possibile accedere a strumenti di debug, come lo stack trace e gli heap dump, che non possono essere impiegati quando si esegue l'applicazione nel servizio gestito per Apache Flink.

Per informazioni sulla creazione di un'installazione locale di Flink, consulta Standalone nella documentazione di Apache Flink.