测试环境遇到:应用走 OBProxy 连 OB 集群,压测时偶发 4013 超时,直连 OBServer 基本正常。
已排查:
- OBProxy 到 OBServer 的网络 RTT 正常、无丢包;
- 调大了
proxy_mem_limited、proxy_thread_num,改善不明显;
-
obproxy_error.log 里能看到一些 server session is busy。
想请教下大家一般从哪些维度定位?是 OBProxy 的路由/连接池参数,还是后端租户资源(cpu_quota_concurrency、memstore 水位)?有没有推荐的排查顺序?
1 个赞
论坛小助手
#4
根据您提供的信息,您已经在测试环境中遇到了通过 OBProxy 连接到 OceanBase 时出现的 4013 超时问题,并且已经尝试了调整 proxy_mem_limited 和 proxy_thread_num 参数但改善不明显。您提到在 obproxy_error.log 中看到一些 “server session is busy” 的日志信息。以下是基于此情况的一些建议排查步骤,以及可能导致该问题的原因分析。
1. 确认网络状况
虽然您已确认从 OBProxy 到 OBServer 的 RTT 正常且没有丢包,但在高并发场景下,还需要注意是否存在瞬时性的网络波动或拥塞现象。这可以通过监控工具持续观察。
2. 检查 OBProxy 日志
除了 obproxy_error.log,建议同时检查 obproxy_diagnosis.log 文件(见文档片段 1),特别是关于超时和会话繁忙的具体日志记录。这些诊断日志可能提供更多线索,帮助确定是否为 OBProxy 侧的问题,如内存不足、线程池耗尽等状况。
3. 分析 OBProxy 配置
-
连接池设置:检查当前使用的连接池参数,比如
max_pool_size、pool_timeout 是否合理。如果连接池过小,则可能无法支持高并发请求。
-
超时相关配置:查看与超时相关的设置,例如
detect_server_timeout(参见最后一个文档片段), net_write_timeout(参考文档片段 4),确认其值是否合适,必要时适当调大以适应压测环境的需求。
4. 后端租户资源
-
CPU 并发限制 (
cpu_quota_concurrency):确保租户配置的 CPU 并发数足够支持您的工作负载。
-
Memstore 使用情况:监控 memstore 的使用率,过高可能导致写入性能下降,间接影响客户端的感知延迟。
5. OCP 性能监控
利用 OCP 对 OBProxy 进行实时性能监控(OBProxy 性能监控),可以帮助快速识别是否存在明显的瓶颈点或者异常趋势,比如 QPS 下降、响应时间延长等情况。
6. 其他潜在因素
- 如果上述方面均未发现问题,则需进一步考虑是否存在特定 SQL 执行慢的情况,或是由于数据分布导致跨机访问过多等因素造成的影响。
排查顺序推荐
- 重新审查并优化 OBProxy 的相关配置项;
- 深入挖掘日志文件中的详细错误消息;
- 监控后端租户的各项资源利用率指标;
- 利用 OCP 工具进行综合性能评估;
- 最后才转向具体的 SQL 语句层面进行分析。
希望这些建议对解决您的问题有所帮助!如果仍有疑问,请提供更详细的日志信息以便进一步探讨。
检索到的文档如下:
- 遇到问题如何向技术支持同学提问
- 启动 OBProxy
- ODP 端故障
- 连接诊断
- OBProxy 性能监控
- 产品 FAQ
- 如何理解逻辑连接
- 分析诊断&决策流程
- 分布式事务
- detect_server_timeout