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
Os tópicos a seguir oferecem soluções para problemas comuns com produtores do Amazon Kinesis Data Streams:
Meu aplicativo produtor está gravando a uma taxa menor que a esperada
Os motivos mais comuns para a throughput de gravação ser mais lenta do que o esperado são:
Limites de serviço excedidos
Para descobrir se os limites do serviço estão sendo excedidos, verifique se seu produtor está lançando exceções de taxa de transferência do serviço e valide quais API operações estão sendo limitadas. Lembre-se de que há limites diferentes de acordo com a chamada, consulte Cotas e limites. 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:
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 da 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.
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, enquanto a operação de vários registros PutRecords é 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
Antes de começar a otimizar o produtor, conclua as seguintes tarefas importantes. Primeiro, identifique sua throughput de pico desejada 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). 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 geralmente está executando a partir de um servidor local ou de uma EC2 instância da Amazon. Os clientes que precisam de uma throughput mais alta 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 Kinesis Producer Library (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 PutRecordsde registro único. PutRecord 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 for 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 for 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()
O uso flushSync()
incorreto pode afetar significativamente o desempenho de gravação. A flushSync()
operação foi projetada para cenários de desligamento para garantir que todos os registros armazenados em buffer sejam enviados antes que o KPL aplicativo seja encerrado. Se você implementou essa operação após cada operação de gravação, ela pode adicionar uma latência extra substancial, cerca de 500 ms por gravação. Certifique-se de ter implementado flushSync()
somente o desligamento do aplicativo para evitar atrasos extras desnecessários no desempenho de gravação.
Eu recebo um erro de permissão de chave KMS mestra não autorizada
Esse erro ocorre quando um aplicativo produtor grava em um fluxo criptografado sem permissões na chave KMS mestra. Para atribuir permissões a um aplicativo para acessar uma KMS chave, consulte Usando políticas de chaves em AWS KMS e Usando IAM políticas com AWS KMS.
Solucionar outros problemas comuns para produtores
-
Por que meu fluxo de dados Kinesis retorna um Erro de Servidor Interno 500?
-
How do I troubleshoot timeout errors when writing from Flink to Kinesis Data Streams?
-
How do I troubleshoot throttling errors in Kinesis Data Streams?
-
Por que ocorre controle de utilização em meu fluxo de dados Kinesis?
-
Como posso colocar registros de dados em um stream de dados do Kinesis usando o? KPL