

# 监控 DAX
<a name="pres-guide-monitor-dax"></a>

您可以监控关键[指标](dax-metrics-dimensions-dax.md#dax-metrics-dimensions)（如缓存命中率），以确保获得最佳 DAX 集群性能、诊断问题并确定何时需要扩展集群。定期检查关键指标可以帮助您根据自己的工作负载要求扩展集群，从而保持性能、稳定性和成本效益。有关监控 DAX 的更多信息，请参阅[生产监控](dax-production-monitoring.md)。

下表列出了您应监控的一些关键指标：
+ **缓存命中率** – 显示 DAX 如何有效地提供缓存数据，从而减少访问底层 DynamoDB 表的需要。集群很少出现缓存未命中表明缓存效率良好。但是缓存命中率低则表明您可能需要重新访问缓存 TTL 设置，或者工作负载不适合缓存。

  可使用 Amazon CloudWatch 计算 DAX 集群的缓存命中率。比较 `ItemCacheHits`、`ItemCacheMisses`、`QueryCacheHits` 和 `QueryCacheMisses` 指标以获得此比率。以下公式显示了如何计算缓存命中率。要使用此公式计算此比率，请将缓存命中率除以缓存命中率和未命中率之和。

  ```
  Cache hit ratio = Cache hits / (Cache hits + Cache misses)
  ```

  缓存命中率是一个介于 0 和 1 之间的数字，以百分比表示。百分比越高表示总体缓存利用率越高。
+ **ErrorRequestCount** – 节点或集群报告的用户错误导致的请求计数。`ErrorRequestCount` 包括受到节点或集群节流的请求。监控用户错误可以帮助您识别应用程序中的扩展错误配置或热门项目/分区模式。
+ **操作延迟** – 监控对 DAX 集群的读取和写入操作的延迟可以帮助您识别性能瓶颈。延迟增加可能表明您的 DAX 集群配置、网络存在问题或者需要扩展。
+ **网络消耗** – 密切关注 `NetworkBytesIn` 和 `NetworkBytesOut` 指标，以监控 DAX 集群的网络流量。网络吞吐量的意外增加可能意味着客户端请求数增加或查询模式效率低下，从而导致传输更多数据。

  监控网络消耗可帮助您管理 DAX 集群的成本。它还可以确保网络不会成为影响集群性能的瓶颈。
+ **逐出率** - 显示从缓存中移除项目以便为新物品腾出空间的频率。如果逐出率随着时间的推移而增加，表明您的缓存可能太小或缓存策略无效。

  在 CloudWatch 中监控 `EvictedSize` 指标，以确定缓存大小是否适配工作负载。如果被逐出的总大小持续增长，则可能需要纵向扩展 DAX 集群以容纳更大缓存。
+ **CPU 利用率** – 节点或集群的 CPU 使用率百分比。这是监控任何数据库或缓存系统的关键指标。CPU 利用率高可能意味着您的 DAX 集群可能过载，需要扩展以应对不断增长的需求。

  监控 DAX 集群的 `CPUUtilization` 指标。如果您的 CPU 利用率一直接近或超过 70-80%，请考虑按照以下章节中所述[纵向扩展 DAX 集群](#dax-cluster-scale-monitoring-data)。

  如果发送到 DAX 的请求数超过节点容量，DAX 将限制其接受额外请求的速率。它通过返回 ThrottlingException 来做到这一点。DAX 持续评估集群的 CPU 利用率，确定在保持正常集群状态的情况下可处理的请求数。

  可以监控 DAX 发布到 CloudWatch 的 `ThrottledRequestCount` 指标。如果经常看到这些异常，应考虑纵向扩展集群。

## 使用监控数据扩展 DAX 集群
<a name="dax-cluster-scale-monitoring-data"></a>

可以通过监控 DAX 集群的性能指标，来确定是需要扩展还是缩减该集群。
+ **纵向或横向扩展** – 如果 DAX 集群的 CPU 利用率高、缓存命中率低（优化缓存策略后）或操作延迟较高，则应纵向扩展该集群。添加更多节点（也称为横向扩展）可以帮助更均匀地分配负载。对于每秒写入请求增加的工作负载，可能需要选择功能更强大的节点（纵向扩展）。
+ **缩减** – 如果您一直看到 CPU 利用率低且操作延迟低于阈值，则可能表明资源预调配过度。在这种情况下，可以缩减节点数以降低成本。在低利用率期间，可以将节点数减少到 1，但不能完全关闭集群。