OCP 接管 OB 集群后,memstore 使用率告警反复触发,阈值一般设多少合适?

OCP 默认的 memstore 告警阈值感觉有点激进,写业务高峰期经常触发但并不影响可用性。

环境:3 副本、单租户单机 8C32G,memstore_limit_percentage 默认 50,大事务不多。想问:

  1. 生产上 memstore 触发告警的比例一般按多少设?
  2. freeze_trigger_percentage(默认 20)需不需要跟着调?
  3. 怎么区分“正常的合并前高点”和“真正需要介入的写放大”?

欢迎评论区交流。

1 个赞

@论坛小助手

生产环境中 MemStore 告警阈值的设置

根据您描述的情况,OCP 接管 OB 集群后,memstore 使用率告警频繁触发,而您的环境是3副本、单租户配置为8C32G,memstore_limit_percentage 默认 50%,且大事务不多。为了更好地管理 memstore 的使用并避免不必要的告警,您可以考虑调整以下参数:

  1. 关于 writing_throttling_trigger_percentage 设置
    该参数控制当MemStore已使用的内存达到某个百分比时是否触发写入限速机制。从 V4.0.0 版本开始,默认值由 100 调整为 60。如果希望放宽对写入操作的限制条件,可以考虑适当调高这个值。不过,这需要权衡系统稳定性与性能之间的关系。文档片段 2

  2. 关于 freeze_trigger_percentage 设置

    • 此参数定义了当租户的 MemTable 内存使用量达到其配置值所指定的百分比时自动进行转储(freeze)的过程,从而释放部分内存空间。默认情况下,它的值设为 20%。
    • 在遇到写放大现象但不严重影响系统可用性的场景下,适当提高 freeze_trigger_percentage 可能有助于减少不必要的转储操作频率。然而,这也可能导致在极端条件下更长时间内占用更多内存资源。因此,具体调整幅度应基于实际业务特点及测试结果来确定。文档片段 3, 文档片段 7
  3. 如何区分正常合并前的高点与需关注的写放大问题

    • 正常情况下,在定期执行合并(Minor Freeze 或 Major Freeze)之前,由于数据积累导致 MemStore 使用率升高属于正常现象。可以通过观察日志或监控图表中周期性出现的峰值来识别这种规律性的变化。
    • 对于“真正需要介入”的情况,通常表现为异常持续时间较长、增幅显著超出预期水平或者伴随有其他性能瓶颈指示器如CPU利用率过高、延迟增加等。在这种情形下,可能涉及到数据分布不合理、查询模式突变等因素,需要进一步调查根本原因,并采取相应优化措施。

推荐的生产环境 MemStore 告警阈值设定

  • 对于大多数应用场景而言,将 memstore_limit_percentage 维持在 50%-70% 之间是比较常见的做法。这允许有足够的缓冲区应对突发流量,同时也留出了足够的时间窗口来进行必要的维护操作。
  • 关于 freeze_trigger_percentage,如果没有特殊需求,保持其在 15%-25% 之间通常是安全的。这样既保证了一定程度的数据持久化效率,又不会过于频繁地引发不必要的存储活动。
  • 最终的选择应当结合具体的业务负载特性以及历史数据分析做出决策。建议通过逐步微调的方式找到最适合自己系统的平衡点,并利用A/B测试等方式验证效果。

请记住,任何配置更改都应在非高峰时段实施,并密切监视后续影响以确保变更符合预期目标。如果上述方法仍无法解决问题,建议联系 OceanBase 官方技术支持寻求帮助。

具体信息可参考以下文档:

  1. tenant_active_memstore_percent_over_threshold OB 租户活跃内存百分比超限
  2. writing_throttling_trigger_percentage
  3. 在您开始前
  4. oas_anomaly_sql_from_anomaly_event_analysis_cpu_percent_high 主机 CPU 超限根因分析,SQL CPU 占比过高
  5. ob_mem_assigned_percent_over_threshold OB 已经分配给租户的内存占比超限
  6. tenant_memstore_percent_over_threshold OB 租户内存使用百分比超限
  7. freeze_trigger_percentage
  8. ob_tenant_cpu_usage_over_threshold OceanBase 租户 CPU 使用率超限
  9. ob_host_cpu_percent_over_threshold OB 服务器 CPU 使用率超限
  10. ob_host_mem_percent_over_threshold OB 服务器内存使用率超限