现在有一个 6 节点的 Riak 集群,它遇到了非常高的延迟和超时问题。当我去检查时,riak-admin transfers
我得到了以下信息:
ubuntu@ip-172-31-38-8:~$ riak-admin transfers
'riak@prod-riak-19' waiting to handoff 54 partitions
'riak@prod-riak-18' waiting to handoff 54 partitions
'riak@prod-riak-17' waiting to handoff 53 partitions
'riak@prod-riak-16' waiting to handoff 53 partitions
'riak@prod-riak-15' waiting to handoff 53 partitions
'riak@prod-riak-14' waiting to handoff 53 partitions
此后我关闭了 Active Anti-Entropy,但仍然遇到高延迟,但其他问题似乎没有给我们带来问题。当我检查错误日志时,过去 5 小时内没有任何错误。
CPU 使用率如下:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4016 riak 20 0 3775m 564m 6224 S 9 3.8 3:34.90 beam.smp
所以机器显然没有达到极限。这是数据损坏的迹象吗?这里可能发生了什么?谢谢
答案1
当 Riak 节点启动时,它会为环中的每个分区生成一个 vnode,即使它不拥有这些分区也是如此。它不拥有的每个 vnode 都会尝试与拥有它的节点进行交接,交接成功后将关闭。这些交接受转账限额。
假设环大小为 64,则每个节点将拥有 10 或 11 个 vnode。如果自上次重新启动整个集群以来没有完成任何交接,则您显示的传输输出是预期的。