

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Solução de problemas de produtores do Amazon Kinesis Data Streams
<a name="troubleshooting-producers"></a>

**Topics**
+ [Meu aplicativo produtor está gravando a uma taxa menor que a esperada](#producer-writing-at-slower-rate)
+ [Eu recebo um erro de permissão de chave mestra do KMS não autorizada](#unauthorized-kms-producer)
+ [Solucionar outros problemas comuns para produtores](#misc-troubleshooting-producer)

## Meu aplicativo produtor está gravando a uma taxa menor que a esperada
<a name="producer-writing-at-slower-rate"></a>

**Topics**
+ [Limites de serviço excedidos](#service-limits-exceeded)
+ [Quero otimizar meu produtor](#producer-optimization)
+ [Uso indevido das operações `flushSync()`](#misuse-tag)

### Limites de serviço excedidos
<a name="service-limits-exceeded"></a>

Para descobrir se os limites de serviço estão sendo excedidos, verifique se o produtor está lançando exceções de throughput a partir do serviço e valide quais operações da API estão sendo aceleradas. Lembre-se de que há limites diferentes de acordo com a chamada, consulte [Cotas e limites](service-sizes-and-limits.md). Por exemplo, além dos limites de nível de fragmento para gravações e leituras que são mais comumente conhecidas, há limites de nível de fluxo a seguir:
+ [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)

As operações `CreateStream`, `DeleteStream`, `ListStreams`, `GetShardIterator` e `MergeShards` são limitadas a 5 chamadas por segundo. A operação `DescribeStream` é limitada a 10 chamadas por segundo. A operação `DescribeStreamSummary` é limitada a 20 chamadas por segundo.

Se essas chamadas não forem o problema, selecione uma chave de partição que permita distribuir operações *put* uniformemente em todos os fragmentos e não tenha uma determinada chave de partição que esteja colidindo com os limites de serviço quando as restantes não estão. Isso requer a medição do throughput de pico e que seja levado em conta o número de fragmentos no seu fluxo. Para obter mais informações sobre o gerenciamento de streams, consulte [Criar e gerenciar fluxos de dados do Kinesis](working-with-streams.md).

**dica**  
Lembre-se de arredondar para o kilobyte mais próximo para cálculos de limitação de taxa de transferência ao usar a operação de um único registro [PutRecord](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecord.html), enquanto a operação de vários registros [PutRecords](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecords.html) é arredondada na soma cumulativa dos registros em cada chamada. Por exemplo, uma solicitação `PutRecords` com 600 registros com tamanho de 1,1 KB não serão aceleradas. 

### Quero otimizar meu produtor
<a name="producer-optimization"></a>

Antes de começar a otimizar o produtor, conclua as seguintes tarefas importantes. Primeiro, identifique seu throughput de pico desejado em termos de tamanho do registro e registros por segundo. Em seguida, descarte a capacidade de fluxo conforme o fator de limitação ([Limites de serviço excedidos](#service-limits-exceeded)). Se a capacidade de fluxo foi excluída, use as seguintes dicas de solução de problemas e diretrizes de otimização para os dois tipos comuns de aplicações de produção.

**Produtor grande**

Um grande produtor normalmente é executado em um servidor on-premises ou em uma instância do Amazon EC2. Os clientes que precisam de um throughput mais alto de um grande produtor normalmente se preocupam com a latência por registro. As estratégias para lidar com a latência incluem o seguinte: Se o cliente puder armazenar registros em microlote/buffer, use a [Amazon Kinesis Producer Library](https://docs.aws.amazon.com/kinesis/latest/dev/developing-producers-with-kpl.html) (que tem lógica de agregação avançada), a operação de vários registros ou agregar registros em um arquivo maior antes de usar a operação [PutRecords](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecords.html)de registro único. [PutRecord](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecord.html) Se não for possível criar microlotes ou armazenar registros em buffer, use vários threads para gravar no serviço Kinesis Data Streams ao mesmo tempo. Os AWS SDK para Java e outros SDKs incluem clientes assíncronos que podem fazer isso com muito pouco código.

**Produtor pequeno**

Um pequeno produtor geralmente é um aplicativo móvel, dispositivo IoT ou cliente web. Se for um aplicativo móvel, recomendamos usar a `PutRecords` operação ou o Kinesis Recorder no celular. AWS SDKs Para obter mais informações, consulte AWS Mobile SDK para Android Guia de introdução e AWS Mobile SDK for iOS Guia de introdução. Aplicativos móveis devem lidar com conexões intermitentes inerentemente e precisam de algum tipo de alocação em lote, como `PutRecords`. Se não for possível alocar em lote por algum motivo, consulte as informações sobre Grande produtor acima. Se o seu produtor é um navegador, a quantidade de dados que está sendo gerada geralmente é muito pequena. No entanto, as operações *put* estão sendo colocadas no caminho crítico do aplicativo, o que não é recomendável.

### Uso indevido das operações `flushSync()`
<a name="misuse-tag"></a>

O uso incorreto do `flushSync()` pode afetar significativamente o desempenho de gravação. A operação do `flushSync()` foi projetada para cenários de desligamento, a fim de garantir que todos os registros armazenados em buffer sejam enviados antes que a aplicação KPL seja encerrada. Se você implementou essa operação após cada operação de gravação, ela pode adicionar uma latência extra substancial de cerca de 500 ms por gravação. Assegure que `flushSync()` tenha sido implementado somente para o desligamento da aplicação para evitar atrasos extras desnecessários no desempenho de gravação. 

## Eu recebo um erro de permissão de chave mestra do KMS não autorizada
<a name="unauthorized-kms-producer"></a>

Esse erro ocorre quando um aplicativo produtor grava em um fluxo criptografado sem permissões na chave mestra do KMS. Para atribuir permissões a uma aplicação para que acesse uma chave do KMS, consulte [Using Key Policies in AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) e [Using IAM Policies with AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html).

## Solucionar outros problemas comuns para produtores
<a name="misc-troubleshooting-producer"></a>
+ [Por que meu fluxo de dados Kinesis retorna um Erro de Servidor Interno 500?](https://aws.amazon.com/premiumsupport/knowledge-center/kinesis-data-stream-500-error/)
+ [How do I troubleshoot timeout errors when writing from Flink to Kinesis Data Streams?](https://aws.amazon.com/premiumsupport/knowledge-center/kinesis-flink-timeout/)
+ [How do I troubleshoot throttling errors in Kinesis Data Streams?](https://aws.amazon.com/premiumsupport/knowledge-center/kinesis-data-stream-throttling-errors/)
+ [Por que ocorre controle de utilização em meu fluxo de dados Kinesis?](https://aws.amazon.com/premiumsupport/knowledge-center/kinesis-data-stream-throttling/)
+ [Como posso colocar registros de dados em um fluxo de dados usando a KPL?](https://aws.amazon.com/premiumsupport/knowledge-center/kinesis-data-stream-kpl/)