例如当我们在 Drop 大量的表后 , 会产生很多的空 Region 。在 Region 数量较多的情况下 , Raftstore 需要花费一些时间去处理大量 Region 的心跳 , 从而带来一些延迟 , 导致某些读写请求得不到及时处理 。
如果读写压力较大 , Raftstore 线程的 CPU 使用率容易达到瓶颈 , 导致延迟进一步增加 , 进而影响性能表现 。
因此我们会希望尽快的进行 Region Merge , 来避免过多的 Region 对集群造成性能损耗时 , 我们可以同时调小 max-merge-region-keys、max-merge-region-size , 来让其更快的触发 Merge 操作 , 同时调大 merge-schedule-limit 提高并发度 。
例如当我们发现某台 KV 磁盘空间剩余 40% 开始大量调度时 , 我们可以将 high-space-ratio 调整到 0.7 , 以临时避免调度对业务产生的影响 。
我们也可以控制调度的并发度 , 来减少对业务产生的影响 , 实测这都是立竿见影的参数 , 大家如果遇到这些问题可供参考 。
对于第二点 , 尤其是使用 DM 期间 , 将 DM-worker 和 TiKV 混合部署的情况下 , 要注意清理全量备份留下的文件和 Relaylog 。
文章插图
默认调度策略是当磁盘剩余的有效空间不足 40% , 处于中间态时则同时考虑数据量和剩余空间两个因素做加权和当作得分 , 当得分出现比较大的差异时 , 就会开始调度 。
所以 DM 导入完成后 , 要记得删除全量备份 。就是 dumped_data.task_xxx 文件夹 , 这个全量备份一般都会比较大 , 如果 dm-worker 和 TiKV 混部 , 就会出现某个 TiKV 节点磁盘已使用率高于其他 。
这时 PD 的 store region score 就会相比其他节点出现异常 , 引起性能抖动和 Duration 升高 。
文章插图
一直等待其追上后 , 才会像下图这样:
文章插图
此时 , balancer 已达平衡状态:
文章插图
Duration 恢复正常水平 , 如下图 16:54 分时的情况:
文章插图
QPS 也不再积压 , 恢复正常水准:
文章插图
关于 relay-log , 默认是不清理的 , 就和 MySQL 的 expire_logs_days 一样 , 这块可以通过 dm-worker 的配置文件来进行配置 。
例如将 Expires 配置为 7 , 代表 7 天后删除:
[purge]interval = 3600expires = 7remain-space = 15
Expires 来控制保留天数 。默认 expires=0 , 即没有过期时间 , 而 remain-space=15 意思是当磁盘只剩于 15G 的时候开始尝试清理 , 这种情况我们极少会碰到 , 因此这个清理方式其实基本上是用不到的 。所以建议有需要删除过期 relay-log 的小伙伴 , 直接配置 Expires 保留天数就可以了 。
DM 导入完成后 , 应该提供是否在完成后自动删除全备文件的选项 , 可以默认不删 , 由使用者决定是否删除 。
从使用者角度来说 , 全量备份目录无论是全量一次性导入还是 all 增量同步 , 后续都不会再使用到 。
推荐阅读
- 明明是4KHDMI线,为什么高清电视变标清?究竟错在哪?
- 实例详解,百度搜索oCPC优化技巧
- 计算机端口详解
- 怎么回事?明明是4KHDMI线,为什么高清电视变标清?究竟错在哪?
- 基于oAuth的授权登陆
- 为什么子宫会隐隐作痛
- 为什么没有母乳?
- 淘宝卖家修改价格为什么修改不了了 手机淘宝怎么提交订单让卖家改价
- 竞品怎么比较 淘宝竞品分析主要从哪几个方面
- 淘宝店库存为什么不能改 淘宝修改库存技巧