一.什么是流控(FC)?如何工作?

节点接收写集并把它们按照全局顺序组织起来,节点将接收到的未应用和提交的事务保存在接收队列中,
当这个接收队列达到一定的大小,将触发限流;此时节点将暂停复制,节点会先处理接收队列中的任务。
当接收队列减小到一个可管理的值后,复制将恢复。

它普遍存在于galera集群系统。

二.流控是发生了什么,会有哪些全局值可以观察到流控?

mysql>  show global status like 'wsrep_flow%';
+----------------------------------+----------------+
| Variable_name | Value |
+----------------------------------+----------------+
| wsrep_flow_control_paused_ns | 0 |
| wsrep_flow_control_paused | 0.000000 |
| wsrep_flow_control_sent | 0 |
| wsrep_flow_control_recv | 0 |
| wsrep_flow_control_interval | [ 1024, 1024 ] |
| wsrep_flow_control_interval_low | 1024 |
| wsrep_flow_control_interval_high | 1024 |
| wsrep_flow_control_status | OFF |
+----------------------------------+----------------+

wsrep_flow_control_paused_ns

限流发生时,复制同步暂停的时间(各节点都可能出现,不适合作为监控项)

wsrep_flow_control_paused

该状态值发生变化,含义为从上一次SHOW GLOBAL STATUS命令开始,
限流占全体同步数据时间的百分比(初始值0.0),理想情况下应该趋近于0.0;
当它比较大的时候(超过0.6),我们需要采取一些手段(添加新节点、删除慢节点,调高wsrep_slave_threads值)
来改善限流情况

wsrep_flow_control_sent

本地节点发送给集群的限流事件信息数量,可以用来当做监控项,来确认哪个节点导致了限流产生

wsrep_flow_control_recv

本地节点收到的集群限流事件信息数量

wsrep_flow_control_interval

wsrep_flow_control_interval_low

wsrep_flow_control_interval_high

wsrep_flow_control_status

如何进行限流调优?

1. wsrep_slave_threads
The number of threads to use for applying slave write sets.
用于设置读节点执行写集的线程个数

mysql> show global variables like 'wsrep_slave_threads';
+---------------------+-------+
| Variable_name | Value |
+---------------------+-------+
| wsrep_slave_threads | 24 |
+---------------------+-------+

默认值1是远远不够的,我们需要根据另外一个状态值进行调整
公司安装的PXC集群,默认该参数值为16(也是不够的)

2. wsrep_cert_deps_distance
可以并行执行的最高与最低队列值之间的平均距离
代表可以同时并行执行多少个写集的操作

mysql> show global status like 'wsrep_cert_deps_distance';
+--------------------------+-----------+
| Variable_name | Value |
+--------------------------+-----------+
| wsrep_cert_deps_distance | 95.288623 |
+--------------------------+-----------+

我们可以将wsrep_slave_threads的值按照wsrep_cert_deps_distance的值设置

注意:刚做完SST的时候,这个状态值会非常高,然后缓慢下降,此时该值不具备参考性

mysql> show global status like 'wsrep_cert_deps_distance';
+--------------------------+-------------+
| Variable_name | Value |
+--------------------------+-------------+
| wsrep_cert_deps_distance | 6015.952973 |
+--------------------------+-------------+
1 row in set (0.00 sec) mysql> show global status like 'wsrep_cert_deps_distance';
+--------------------------+-------------+
| Variable_name | Value |
+--------------------------+-------------+
| wsrep_cert_deps_distance | 5840.756210 |
+--------------------------+-------------+
1 row in set (0.00 sec) mysql> show global status like 'wsrep_cert_deps_distance';
+--------------------------+-------------+
| Variable_name | Value |
+--------------------------+-------------+
| wsrep_cert_deps_distance | 5421.252076 |
+--------------------------+-------------+
1 row in set (0.00 sec)

其他参数、状态值

1. wsrep_local_recv_queue_%

mysql> show global status like 'wsrep_local_recv_queue_avg';
+----------------------------+----------+
| Variable_name | Value |
+----------------------------+----------+
| wsrep_local_recv_queue_avg | 0.110581 |
+----------------------------+----------+
1 row in set (0.00 sec)

When the node returns a value higher than 0.0 it means that the node cannot apply write-sets as fast as it receives them,
which can lead to replication throttling.
简单地说:这个值高于0.0,说明发生同步延迟,将会引起限流

mysql> show global status like 'wsrep_local_recv_queue_m%';
+----------------------------+-------+
| Variable_name | Value |
+----------------------------+-------+
| wsrep_local_recv_queue_max | 3788 |
| wsrep_local_recv_queue_min | 0 |
+----------------------------+-------+
2 rows in set (0.00 sec)

In addition to this status variable, you can also use wsrep_local_recv_queue_max and wsrep_local_recv_queue_min
to see the maximum and minimum sizes the node recorded for the local received queue.

 

【PXC】关于限流的参数,状态值说明的更多相关文章

  1. Spring Cloud Gateway 结合配置中心限流

    前言 上篇文章我讲过复杂的限流场景可以通过扩展RedisRateLimiter来实现自己的限流策略. 假设你领导给你安排了一个任务,具体需求如下: 针对具体的接口做限流 不同接口限流的力度可以不同 可 ...

  2. spring boot gateway自定义限流

    参考:https://blog.csdn.net/ErickPang/article/details/84680132 采用自带默认网关请参照微服务架构spring cloud - gateway网关 ...

  3. NGINX 上的限流

    NGINX 上的限流(译) zlup YP小站  今天 前言 本文是对Rate Limiting with NGINX and NGINX Plus的主要内容(去掉了关于NGINX Plus相关内容) ...

  4. 面试官:RabbitMQ怎么实现消费端限流

    哈喽!大家好,我是小奇,一位不靠谱的程序员 小奇打算以轻松幽默的对话方式来分享一些技术,如果你觉得通过小奇的文章学到了东西,那就给小奇一个赞吧 文章持续更新 一.前言 RabbitMQ有很多高级特性, ...

  5. nginx对特定参数限流

    接到一个需求, 需要对请求(GET)里面的某个参数  的特定的值, 进行限流; 因为不限流的话, 不知道什么时候这个id的请求飙一下, 服务端就被压死了... 就像这样: /index.html?id ...

  6. SpringCloud Alibaba系列(三) Sentinel热点参数限流

    愿你生命中有够多的云翳,造就一个美好的黄昏 欢迎关注公众号[渣男小四],一个喜欢技术更喜欢艺术的青年 一.介绍 热点即经常访问的数据.很多时候我们希望统计某个热点数据中访问频次最高的 Top K 数据 ...

  7. [WCF编程]9.性能与限流

    一.性能概述 WCF服务的性能取决于很多因素.出了CPU.RAM和网络性能等常见的因素外,实例上下文模式.并发模式.数据契约的设计或使用的绑定等与WCF有关的因素都起着重要的作用. 实例上下文模式用来 ...

  8. 快速入门系列--WCF--06并发限流、可靠会话和队列服务

    这部分将介绍一些相对深入的知识点,包括通过并发限流来保证服务的可用性,通过可靠会话机制保证会话信息的可靠性,通过队列服务来解耦客户端和服务端,提高系统的可服务数量并可以起到削峰的作用,最后还会对之前的 ...

  9. 服务接口API限流 Rate Limit 续

    一.前言 上一篇文章中粗浅的介绍使用Redis和基于令牌桶算法进行对服务接口API限流,本文介绍另一种算法---漏桶算法的应用.Nginx想必大家都有所了解是一个高性能的 HTTP 和反向代理服务器, ...

随机推荐

  1. 五十五、SAP中调用系统自带的函数

    一.我们需要取一个月中的最后一天,代码如下 二.执行结果如下 三.以上为纯手打,错了好几次才改过来,还有一个办法就是系统自动生成,点击编辑->模式 四.输入需要调用的函数名字BKK_GET_MO ...

  2. 吴裕雄--天生自然C++语言学习笔记:C++ 数据结构

    C/C++ 数组允许定义可存储相同类型数据项的变量,但是结构是 C++ 中另一种用户自定义的可用的数据类型,它允许存储不同类型的数据项. 结构用于表示一条记录,假设想要跟踪图书馆中书本的动态,可能需要 ...

  3. mysql多表关联更新

    update 表A inner join 表B on 表A.关联字段 = 表B.关联字段 set 表a.待更新字段01 = 表B.字段01 , 表a.待更新字段021 = 表B.字段02 where ...

  4. java嵌套循环练习

    打印一个等腰三角形 package com.lv.jj; import java.util.Scanner; public class DemoDy { public static void main ...

  5. java反射的学习

    1.类的 类类型(ClassType) 类的类类型可以用来做很多事,我们可以通过它获取到类的名称,类的路径,类的成员变量,类的方法等等,还可以通过它获得类的实例化对象. 我们可以通过 类名.class ...

  6. tx2系统备份与恢复

    https://blog.csdn.net/ycy_dy/article/details/80493392 https://blog.csdn.net/piaopiaopiaopiaopiao/art ...

  7. 【pwnable.kr】 mistake

    又一道pwnable,我还没放弃.. ssh mistake@pwnable.kr -p2222 (pw:guest) 源代码如下: #include <stdio.h> #include ...

  8. 二十九、CI框架之session用法

    一.我们在控制器中添加session写入和读取的2个函数,如图: 二.我们用浏览器访问login页面,可以看到有一串被加密的cookies,在CI中session也是以cookies的方式存放的 三. ...

  9. tensorflow应用于手写数字识别(第二版)

    import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data#载入数据集 mnist = inp ...

  10. css代码实现列表等宽

    实现上面的手机页面,我们会遇到一个自适应的问题,但是手机页面的屏幕大小不一致,自适应的问题不是百分比可以好好解决的,我采用下面的布局:display:flex; <!DOCTYPE html&g ...