排查从 Kinesis 代理发送时出现的问题 - Amazon Data Firehose
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

排查从 Kinesis 代理发送时出现的问题

此表提供了使用 Amazon Kinesis 代理时所遇到常见问题的问题排查信息和解决方案。

事务 解决方案
为什么 Kinesis 代理无法在 Windows 上运行?

适用于 Windows 的 Kinesis 代理与适用于 Linux 平台的 Kinesis 代理是不同的软件。

为什么 Kinesis 代理速度变慢且/或 RecordSendErrors 增加?

这通常是由于 Kinesis 节流造成的。查看 Kinesis Data Streams 的 WriteProvisionedThroughputExceeded 指标或 Firehose 流的 ThrottledRecords 指标。这些指标从 0 开始的任何增加都表示需要增加流限制。有关更多信息,请参阅 Kinesis Data Stream limitsFirehose streams

排除节流后,查看 Kinesis 代理是否配置为跟踪大量小文件。Kinesis 代理跟踪新文件时会有延迟,因此 Kinesis 代理应跟踪少量大文件。尝试将您的日志文件合并为大文件。

如何解决 java.lang.OutOfMemoryError 异常? 当 Kinesis 代理没有足够的内存来处理当前的工作负载时会发生此情况。尝试增加 /usr/bin/start-aws-kinesis-agent 中的 JAVA_START_HEAPJAVA_MAX_HEAP,并重新启动代理。
如何解决 IllegalStateException : connection pool shut down 异常? Kinesis 代理没有足够的连接来处理当前的工作负载。尝试在 /etc/aws-kinesis/agent.json 的常规代理配置设置中增加 maxConnectionsmaxSendingThreads。这些字段的默认值是可用运行时系统处理器的 12 倍。有关高级代理配置设置的更多信息,请参见 AgentConfiguration.java
如何调试 Kinesis 代理的其他问题? 可在 /etc/aws-kinesis/log4j.xml 中启用 DEBUG 级别日志。
我应该如何配置 Kinesis 代理? maxBufferSizeBytes 越小,Kinesis 代理发送数据的频率就越高。这可能是好事,因为这减少了记录的传输时间,但也增加了每秒对 Kinesis 的请求。
为什么 Kinesis 代理会发送重复记录? 这是由于文件跟踪中的错误配置造成的。确保每个 fileFlow’s filePattern 只匹配一个文件。如果正在使用的 logrotate 模式处于 copytruncate 模式,也可能发生这种情况。尝试将模式更改为默认模式或创建模式以避免重复。有关处理重复记录的更多信息,请参阅处理重复记录