ITPub博客

首页 > 数据库 > MySQL > MGR参数介绍-group_replication_poll_spin_loops

MGR参数介绍-group_replication_poll_spin_loops

原创 MySQL 作者:贺子_DBA时代 时间:2023-12-10 12:10:25 0 删除 编辑

一、官方介绍:

0

参数修改方式:

此系统变量的值可以在组复制运行时更改,但只有在停止并重新启动组成员上的组复制后,更改才会生效。

group_replication_poll_spin_loops specifies the number of times the group communication thread waits for the communication engine mutex to be released before the thread waits for more incoming network messages.

group_replication_poll_spin_loops指定组通信线程在等待更多传入网络消息之前等待通信引擎互斥释放的次数。

二、个人理解:

组通信线程(Group Communication Thread,GCT)在加载组复制插件后循环运行。GCT从组插件接收消息,处理仲裁和故障检测相关任务,发送活动消息,并处理服务器和组之间的双向事务传输。当队列中没有消息时,GCT进入睡眠状态。通过在实际进入睡眠状态之前将等待时间设置为稍长,即进行主动等待,在某些情况下是有益的,因为GCT频繁休眠可能浪费可用的CPU时间。要强制GCT执行活动等待,使用group_replication_poll_spin_loops选项,此选项控制GCT在进入睡眠状态前尝试接收消息的次数,也可说是控制通信线程的贪婪程度,缺省值为0。在网速很慢的环境中,适当配置该选项可以降低事务延迟(因为当网速慢的时候,他可能会认为队列中没有消息,进而进入休眠状态,然后当网络恢复后,GCT还处于休眠状态而无法处理消息而浪费CPU资源),

三、设置建议:

注意:在慢网环境中,按MySQL官方文档的说法,该选项也只是作为一种微调手段。所以不能靠他来有明显的改善!

当加载并启动MGR插件时,组通信线程(GCT)就会不断循环运行。GCT接收来自组和MGR插件的消息,处理与仲裁和故障检测相关的任务,发送一些保活的通讯消息,还处理MySQL Server与组之间传入和传出的事务。GCT会等待队列中的传入消息。当队列中没有消息时,GCT将会进行等待。在某些情况下,通过将这个等待配置得稍微长一些(进行主动等待),可以减少操作系统执行上下文切换时从处理器中换出GCT线程的次数。

要强制GCT执行主动等待,请使用系统变量group_replication_poll_spin_loops进行设置,这使得GCT在对下一个消息进行实际轮询队列之前,在已配置的循环次数内进行循环时不做任何相关操作(该系统变量设置的值表示需要等待通信引擎互斥锁(mutex)被释放的次数,不是时间单位)。

mysql> SET GLOBAL group_replication_poll_spin_loops= 10000;

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29654823/viewspace-2999463/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
10年数据库管理员从业经历,熟悉Oracle、mysql、tidb、oceanbase、redis、 mongodb 、python等技术栈,持有11g ocm 、mysql 5.7 ocp 、tidb 5.0 ptcp、tidb 6.0 ptca、oceanbase obcp等

注册时间:2014-05-12

  • 博文量
    327
  • 访问量
    2148914