当我跑步"延迟医生"
结果是:
戴夫,我观察到这个Redis实例中的延迟峰值。你不介意谈论它,你戴夫吗?
- 命令:30个潜伏期峰值(平均438ms,平均偏差513ms,周期14326.50秒)。最糟糕的事件4264ms。
- 快速命令:33次延迟峰值(平均128ms,平均偏差22ms,周期13180.00秒)。最糟糕的事件290ms。
醇>
我为您提供了一些建议:
- 检查慢速日志,了解正在运行的命令执行速度太慢。有关详细信息,请查看http://redis.io/commands/slowlog。
- 系统执行不包含系统调用的Redis代码路径的速度很慢。这通常意味着系统不提供Redis CPU长时间运行的时间。你应该尝试:
1)降低系统负载。
2)如果您在同一系统中运行其他软件,则仅为Redis使用计算机/ VM。
3)检查你是否有一个吵闹的邻居"问题。
4)检查' redis-cli --intrinsic-latency 100'什么是系统中的固有延迟。
5)如果您使用的是Jemalloc,请通过使用MALLOC = libc重新编译Redis来检查问题是否与分配器相关。但是,这可能会造成碎片问题。
- 删除,过期或驱逐(由于maxmemory策略)大对象是阻塞操作。如果您有非常大的对象经常被删除,过期或被驱逐,请尝试将这些对象分成多个较小的对象。
- 我检测到您的流程使用了非零数量的匿名大页面。这会在不同条件下创建非常严重的延迟事件,尤其是当Redis持久保存在磁盘上时。要禁用THP支持,请使用命令' echo never> / sys / kernel / mm / transparent_hugepage / enabled',请确保将其添加到/etc/rc.local中,以便在重新启动后再次执行该命令。请注意,即使您已经禁用了THP,仍然需要重新启动Redis进程才能删除已创建的大页面。
当我运行"延迟最新"时,结果是
1)1)"命令"
2)(整数)1528098407
3)(整数)107
4)(整数)4264
2)1)"快速命令"
2)(整数)1528103420
3)(整数)110
4)(整数)290
我知道在1528098407,有一个命令,延迟是4秒,但我们怎么知道"哪个命令"