【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】obproxy
【 使用版本 】v4.3.1;v4.3.6
【问题描述】
若 proxy_mem_limited 配置值设置过小,会引发哪些问题?
-
会不会频繁内存换入换出,导致性能下降
-
会不会触发 OOM
-
会不会出现 SQL 执行中断
【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】obproxy
【 使用版本 】v4.3.1;v4.3.6
【问题描述】
若 proxy_mem_limited 配置值设置过小,会引发哪些问题?
会不会频繁内存换入换出,导致性能下降
会不会触发 OOM
会不会出现 SQL 执行中断
proxy_mem_limited设置过低会导致 OBProxy 频繁触发内存告警、主动退出(OOM Kill),进而引发连接中断、服务不可用甚至雪崩式故障。
学习一下
有官网明确的说明没
关于proxy的问题,mem确实是一个重要的考虑因素。在实际应用中,我发现or方法通常更有效。
从业务视角去看,ODP 的问题主要包含以下几类:
主要影响连接和登录吧,总之这个参数的内存也不应该太小
oom,内存告警
根据文档库中的信息,如果 proxy_mem_limited 设置过低,可能会引发以下问题:
频繁内存换入换出
触发 OOM (Out of Memory)
proxy_mem_limited 设置得过低,OBProxy 可能会因为内存不足而频繁退出。文档片段 1 中提到,OBProxy 日志中会出现类似 obproxy's memory is out of limit's 90% 的报错信息,并且超过设置的内存限制后进程将会主动退出。proxy_mem_limited 参数的默认值为 800 MB(对于命令行安装的 OBProxy),如果设置得比这个值还小,那么 OBProxy 进程可能会频繁地因内存不足而崩溃并重启。SQL 执行中断
proxy_mem_limited 设置过低会直接导致 SQL 执行中断。但是,可以推测,如果内存限制过低,OBProxy 在处理大查询或高并发请求时可能会因为内存不足而无法正常运行,进而影响到正在执行的 SQL 语句,甚至可能导致部分 SQL 语句执行失败或中断。综上所述,proxy_mem_limited 设置过低确实会导致频繁内存换入换出和触发 OOM,但关于是否会直接导致 SQL 执行中断,虽然文档中未明确说明,但可以合理推测这种情况是有可能发生的。因此,在生产环境中建议适当调整 proxy_mem_limited 以避免上述问题。
详情请参考:
学学吧
批量数据变更很容易OOM
尤其是OOM 有官方文档出处没,这个很重要。
如果因为 proxy_mem_limited 满了就OOM了,那风险太大了。可以慢,这个能理解,但直接OOM就有点坑。
打卡打卡