

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à.

# Risolvi i problemi dei produttori di Amazon Kinesis Data Streams
<a name="troubleshooting-producers"></a>

**Topics**
+ [La mia applicazione di produzione sta scrivendo a una velocità inferiore al previsto](#producer-writing-at-slower-rate)
+ [Ricevo un errore di autorizzazione della chiave master KMS non autorizzata](#unauthorized-kms-producer)
+ [Risolvi altri problemi comuni per i produttori](#misc-troubleshooting-producer)

## La mia applicazione di produzione sta scrivendo a una velocità inferiore al previsto
<a name="producer-writing-at-slower-rate"></a>

**Topics**
+ [Limiti di servizio superati](#service-limits-exceeded)
+ [Voglio ottimizzare il mio produttore](#producer-optimization)
+ [Uso improprio delle operazioni `flushSync()`](#misuse-tag)

### Limiti di servizio superati
<a name="service-limits-exceeded"></a>

Per scoprire se vengono superate le restrizioni dei servizi, controlla se il producer sta generando eccezioni di throughput dal servizio e convalida le operazioni API sulle quali viene effettuato il throttling. Ricorda che ci sono limiti diversi in base alla chiamata, consulta [Quote e limiti](service-sizes-and-limits.md). Ad esempio, in aggiunta ai limiti a livello di shard per le operazioni di lettura e scrittura più comunemente noti, ci sono i seguenti limiti a livello di flusso:
+ [CreateStream](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_CreateStream.html)
+ [DeleteStream](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DeleteStream.html)
+ [ListStreams](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_ListStreams.html)
+ [GetShardIterator](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_GetShardIterator.html)
+ [MergeShards](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_MergeShards.html)
+ [DescribeStream](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DescribeStream.html)
+ [DescribeStreamSummary](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DescribeStreamSummary.html)

Le operazioni `CreateStream`, `DeleteStream`, `ListStreams`, `GetShardIterator`, e `MergeShards` sono limitate a 5 chiamate al secondo. L'operazione `DescribeStream` è limitata a 10 chiamate al secondo. L'operazione `DescribeStreamSummary` è limitata a 20 chiamate al secondo.

Se queste chiamate non sono il problema, assicurati di aver selezionato una chiave di partizione che consente di distribuire in modo uniforme le operazioni *put* e che non disponi di una determinata chiave di partizione che va contro le restrizioni dei servizi quando il resto non lo fa. Ciò richiede di misurare i picchi di throughput e considerare il numero di shard nel flusso. Per ulteriori informazioni sulla gestione dei flussi, consulta [Crea e gestisci flussi di dati Kinesis](working-with-streams.md).

**Suggerimento**  
Ricordati di arrotondare al kilobyte più vicino nei calcoli di throttling del throughput quando utilizzi l'operazione di record singolo [PutRecord](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecord.html), mentre l'operazione multi-record [PutRecords](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecords.html) arrotonda la somma cumulativa dei record in ciascuna chiamata. Ad esempio, su una richiesta `PutRecords` di 600 record di 1,1 KB non verrà effettuato il throttling. 

### Voglio ottimizzare il mio produttore
<a name="producer-optimization"></a>

Prima di iniziare a ottimizzare il tuo produttore, completa le seguenti attività chiave. In primo luogo, identifica il throughput maggiore desiderato in termini di dimensioni di record e record al secondo. Quindi, scarta la capacità di streaming come fattore di limitazione ([Limiti di servizio superati](#service-limits-exceeded)). Se hai escluso la capacità di streaming, utilizza i seguenti suggerimenti per la risoluzione dei problemi e linee guida sull'ottimizzazione per due tipi di produttori comuni.

**Produttore di grandi dimensioni**

Un producer di grandi dimensioni in genere è in esecuzione da un server on-premise o un'istanza Amazon EC2. Ai clienti che necessitano di un throughput maggiore da un producer di grandi dimensioni in genere interessa la latenza per record. Le strategie per gestire la latenza includono: se il cliente è in grado di creare record in microbatch/buffer, utilizza la [Amazon Kinesis Producer Library](https://docs.aws.amazon.com/kinesis/latest/dev/developing-producers-with-kpl.html) (che dispone di una logica di aggregazione avanzata), l'operazione multi-record o aggrega i record in un file più grande prima di utilizzare l'operazione [PutRecords](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecords.html)a record singolo. [PutRecord](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecord.html) Se non sei in grado di eseguire un batch/buffer, utilizza più thread per scrivere nel servizio di Flussi di dati Kinesis nello stesso momento. Questi AWS SDK per Java e altri SDKs includono client asincroni che possono eseguire questa operazione con pochissimo codice.

**Produttore di piccole dimensioni**

Un producer di piccole dimensioni solitamente è un'applicazione mobile, un dispositivo IoT o un client Web. Se si tratta di un'app per dispositivi mobili, ti consigliamo di utilizzare l'`PutRecords`operazione o il Kinesis Recorder nel dispositivo mobile. AWS SDKs Per ulteriori informazioni, consulta la Guida AWS Mobile SDK per Android introduttiva e la Guida AWS Mobile SDK for iOS introduttiva. Le applicazioni mobili devono gestire le connessioni intermittenti intrinsecamente e hanno bisogno di un batch di put, ad esempio `PutRecords`. Se non sei in grado di eseguire un batch per qualsiasi motivo, consulta le informazioni sul Produttore di grandi dimensioni qui sopra. Se il producer è un browser, la quantità di dati generati è generalmente inferiore. Tuttavia, stai avviando le operazioni *put* nel percorso critico dell'applicazione, che non è consigliabile.

### Uso improprio delle operazioni `flushSync()`
<a name="misuse-tag"></a>

Un utilizzo `flushSync()` errato può influire in modo significativo sulle prestazioni di scrittura. L'`flushSync()`operazione è progettata per scenari di arresto per garantire che tutti i record memorizzati nel buffer vengano inviati prima del termine dell'applicazione KPL. Se hai implementato questa operazione dopo ogni operazione di scrittura, può aggiungere una notevole latenza aggiuntiva, circa 500 ms per scrittura. Assicurati di aver implementato `flushSync()` solo l'arresto dell'applicazione per evitare inutili ritardi aggiuntivi nelle prestazioni di scrittura. 

## Ricevo un errore di autorizzazione della chiave master KMS non autorizzata
<a name="unauthorized-kms-producer"></a>

Questo errore si verifica quando un'applicazione producer scrive in un flusso crittografato senza autorizzazioni sulla chiave master KMS. Per assegnare le autorizzazioni a un'applicazione per accedere a una chiave KMS, consulta [Utilizzo delle policy della chiave in AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) e [Utilizzo delle policy IAM con AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html).

## Risolvi altri problemi comuni per i produttori
<a name="misc-troubleshooting-producer"></a>
+ [Perché il mio flusso di dati Kinesis restituisce un errore interno del server 500?](https://aws.amazon.com/premiumsupport/knowledge-center/kinesis-data-stream-500-error/)
+ [Come posso risolvere gli errori di timeout durante la scrittura da Flink al flusso di dati Kinesis?](https://aws.amazon.com/premiumsupport/knowledge-center/kinesis-flink-timeout/)
+ [Come posso risolvere gli errori di limitazione nel flusso di dati Kinesis?](https://aws.amazon.com/premiumsupport/knowledge-center/kinesis-data-stream-throttling-errors/)
+ [Perché il mio flusso di dati Kinesis è limitato?](https://aws.amazon.com/premiumsupport/knowledge-center/kinesis-data-stream-throttling/)
+ [Come posso inserire i record di dati in un flusso di dati Kinesis utilizzando la KPL?](https://aws.amazon.com/premiumsupport/knowledge-center/kinesis-data-stream-kpl/)