如何排查延迟问题?

最后更新于 2024年4月18日

症状

用户在使用 Redis Enterprise 或 Redis Cloud 数据库时遇到延迟或超时。

排查步骤

检查长时间运行的命令

使用命令 slowlog get <number of entries> with-complexity,并尝试将这些条目与延迟或超时时间相关联。例如

redis-cli -h <DATABASE_ENDPOINT> -p <DATABASE_PORT> -a <PASSWORD> slowlog get 200 with-complexity

其中

  • DATABASE_ENDPOINT 是数据库端点 FQDN。
  • DATABASE_PORT 是数据库监听端口
  • PASSWORD  是数据库密码

复杂度

长时间运行命令的原因可能是操作的 复杂度 过高 (O(n)) 或键过大(包含大数据量(例如,大于 1MB 的字符串)或包含大量成员的集合,如哈希、集合或列表(例如,超过 10K 个成员))。

资源

  • 检查客户端应用服务器的 CPU 使用率;我们建议将使用率保持在 80% 以下。并考虑相应增加资源。
  • 检查 Redis Enterprise 集群节点的 CPU、分片和 dmcproxy 使用率。我们建议将使用率保持在 80% 以下。
  • 考虑相应增加资源和添加更多分片。
  • 检查您的环境网络。使用外部工具,如 TCPdump 或其他分析工具来测量请求和响应时间,并确定瓶颈。

参考资料

有关 Redis Enterprise 中慢日志的更多信息,请参阅文章 查看 Redis 慢日志。有关更多监控工具,请参阅 RedisInsight 的慢日志面板