对Redis停顿进行故障排除
我们有几个Redis实例在服务器上运行。也有多个Web层服务器连接到那些同时经历停顿的实例。 当时,我们进行了数据包捕获,根据以下wireshark IO图,发现在TX和RX流量中都出现了停顿现象: Redis调用中有一个相关的峰值,但是我怀疑这是时间的延迟,而不是原因: 以15 / s的采样间隔(作为计数器收集),平均有136个内存分配停顿: 在同一时间迁移的NUMA页似乎也不同寻常: 尽管以上内容看起来很正常,但与图表中其他300个以上的尖峰相比,有两个连续的数据点使其异常。 内存压缩失败和压缩停顿也存在相关峰值: 尽管我在这里拥有大量的内存信息,但是我对Linux的内存知识还不足以真正假设一个好的故事,该故事将所有这些信息结合在一起来解释停顿。具有Linux内存知识(也许还有Redis内存知识)的任何人都可以将其中一些信息结合在一起吗? 我们每隔15秒从/ proc / vmstat收集一次所有统计信息,因此,如果有任何您认为可能会增加的数据,请提出要求。我只是选择了似乎有趣的活动,特别是分配停顿,numa迁移和压缩停顿/失败。随后是总计,涵盖了20天的正常运行时间: [kbrandt@ny-redis01: ~] uptime 21:11:49 up 20 days, 20:05, 8 users, load average: 1.05, 0.74, 0.69 [kbrandt@ny-redis01: ~] cat /proc/vmstat nr_free_pages 105382 nr_alloc_batch 5632 nr_inactive_anon 983455 nr_active_anon 15870487 nr_inactive_file 12904618 nr_active_file 2266184 nr_unevictable 0 nr_mlock 0 …