本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
适用于 RabbitMQ 的 Amazon MQ 中网络弹性和监控的最佳实践
网络弹性和监控代理指标对于维护可靠的消息传递应用程序至关重要。完成以下最佳实践,以实施自动恢复机制和资源监控策略。
步骤 1:自动从网络故障中恢复
我们建议始终启用自动网络恢复,以防止在客户端连接到 RabbitMQ 节点失败的情况下出现严重停机。自版本 4.0.0
起,RabbitMQ Java 客户端库默认支持自动网络恢复。
如果在连接 I/O 循环中抛出未处理的异常、检测到套接字读取操作超时或服务器错过心跳,则会触发自动连接恢复。
如果客户端和 RabbitMQ 节点之间的初始连接失败,将不会触发自动恢复。我们建议您编写应用程序代码,以便通过重试连接来解决初始连接失败的问题。以下示例演示了如何使用 RabbitMQ Java 客户端库来重试初始网络故障。
ConnectionFactory factory = new ConnectionFactory(); // enable automatic recovery if using RabbitMQ Java client library prior to version 4.0.0. factory.setAutomaticRecoveryEnabled(true); // configure various connection settings try { Connection conn = factory.newConnection(); } catch (java.net.ConnectException e) { Thread.sleep(5000); // apply retry logic }
注意
如果应用程序使用 Connection.Close
方法关闭连接,则不会启用或触发自动网络恢复。
步骤 2:监控经纪商指标和警报
我们建议您定期监控您的 Amazon MQ for RabbitMQ 代理的CloudWatch 指标和警报,以便在潜在问题影响您的消息传递应用程序之前识别和解决这些问题。主动监控对于维护弹性消息传递应用程序和确保最佳性能至关重要。
适用于 RabbitMQ 的 Amazon MQ 向其发布指标 CloudWatch ,这些指标提供了对代理性能、资源利用率和消息流的见解。要监控的关键指标包括内存使用率和磁盘使用率。您可以设置CloudWatch 警报,以了解您的代理何时接近资源限制或出现性能下降的情况。
监控以下基本指标:
RabbitMQMemUsed
和RabbitMQMemLimit
-
监控内存使用情况,防止出现可能阻止消息发布的内存警报。
RabbitMQDiskFree
和RabbitMQDiskFreeLimit
-
监控磁盘使用情况,以避免可能导致代理故障的磁盘空间问题。
对于集群部署,还要监控特定于节点的指标以识别特定于节点的问题。
注意
有关如何防止内存不足警报的更多信息,请参阅处理和防止内存过高警报。