在这篇文章中,我们将讨论Galera警告“最后活动检查”,意味着什么。
问题
我一直在使用雷竞技下载官网Percona XtraDB集群最近不少,一直在调查各种警告。今天我遇到了这个:
[警告]WSREP:去年PT1.5S多前不检查(PT1.51811S),跳过检查
这个警告是相关的evs.inactive_check_periodoption。这个选项控制调查期组通信响应时间。如果一个节点被延迟,它被添加到列表和延迟可能导致集群驱逐节点。
可能的原因
而一些故障排除技巧似乎将警告与VMWare快照,这不是在这里,我们看到一个物理机器上的警告。
我检查备份或desynced节点,这也并非如此。警告不伴有任何错误或其他信息,所以没有发生至关重要。
在上面的链接故障排除中,Galera开发商说:
这可以看到裸露的金属——低配置mysqld, O / S,或者只是被重载。它意味着这个线程无法获得CPU时间7.1秒。你可以想象,在虚拟机资源访问更加困难(尤其是I / O)比裸露的金属,所以你经常会看到这个虚拟机。
这不是一个Galera具体问题(只是报告被困,其他mysqld线程同样困)所以没有配置选项。您必须确保您的系统和mysqld正确配置,有足够多的RAM(缓冲池不超过供应),交换,有适当的I / O驱动程序安装在客人等等。
基本上,Galera运行在虚拟机和虚拟机接近裸露的金属。
这也可能表明了不稳定的网络还是比预期更高的平均网络延迟的默认配置。除了检查网络,检查I / O,交换和记忆当你看到这个警告。
我们的图表和计数器,否则看起来很健康。如果是这样的话,这是最有可能没有什么可担心的。
这也是一个好主意,以确保你的节点desynced之前备份。找的工作负载峰值。进一步的选择来检查swappiness设置为1在现代内核。
如果所有这一切看起来不错,确保服务器都与相同的国家结核控制规划服务器,有相同的时区和时间和日期是同步的。而这个警告系统过载的迹象,如果一切看起来好这个警告并不是担心的。
源
的警告来自evs_proto.cpp在Galera代码:
如果(last_inactive_check_ + inactive_check_period_ * 3 <现在)
{
log_warn < <“最后活动检查超过”< < inactive_check_period_ * 3
< <”前(“< <(现在- last_inactive_check_)
< < "),跳过检查”;
last_inactive_check_ =现在;
返回;
}
因为默认的inactive_check_period是一秒根据Galera文档,如果现在是晚于最后检查三秒后,它就会跳过上面的例程和延迟将节点添加到列表和做一些其他的逻辑。它的原因是它不想依赖陈旧的柜台前做决定。只是让你知道的消息。
在Pe雷竞技下载官网rcona XtraDB集群,这个设置默认为0.5秒。这个警告只可能是你的inactive_check_period太低,延迟并不是足够高的节点添加到延迟列表。所以你可以考虑增加evs.inactive_check_period解决这些警告。(显然在Galera,现在也可能是0.5但是文档是陈旧的。)
可能的解决方案
找到一个理智的价值我的同事大卫·班尼特想出了这个命令行,它给你一个想法当你检查的警告正在发生:
猫mysqld美元。日志| grep的最后活动检查超过| perl - ne ' m / S (PT (. *)) /;打印1美元。“n”排序- n | | uniq - c
1 1.55228
1 1.5523
1 1.55257
1 1.55345
1 1.55363
1 1.5543
1 1.55436
1 1.55483
1 1.5552
1 1.55582
因此,在这种情况下,它可能是一个好主意inactive_check_period在1或1.5警告消失。
结论
集群中的每个节点保存自己的本地副本如何看待整个集群的拓扑。check_inactive是一个节点触发事件,每一个inactive_check_period秒,帮助整个集群的节点更新视图,并确保它是准确的。服务可以将消息广播通知节点的拓扑结构的变化。例如,如果一个集群节点下降将广播服务消息告诉集群中的每个节点删除它。行动是排队,但实际的集群更新视图check_inactive。这就是为什么它增加了节点的本地副本不活跃,怀疑和延迟节点。
如果一个节点认为这可能是看着陈旧的数据,它不会做出这些决策,等到下次新的队列。不幸的是,如果inactive_check_period太低,将给你警告。





