---
title: "性能分析 - 数据库代理  V4.3.2 | OceanBase 文档中心"
description: "性能分析 基础理论 性能调优 性能调优旨在充分发挥软件和硬件的能力，在真实环境中实现系统的最佳性能，提高软硬件的性价比，降低客户的成本。如下所示，通过 perf stat 命令可采集一段时间硬件性能指标数据。 Performance counter stats for process id &#x27;3260&#x27;: 18225…"
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*nSAhQbrBXKwAAAAAAAAAAAAADiGDAQ/original) 数据库代理 V 4.3.2

# 性能分析

更新时间：2026-04-14 17:41:09

[编辑](https://github.com/oceanbase/oceanbase-proxy-doc/edit/V4.3.2/zh-CN/900.o-m-guide/200.performance-analysis.md)  

## 基础理论

### 性能调优

性能调优旨在充分发挥软件和硬件的能力，在真实环境中实现系统的最佳性能，提高软硬件的性价比，降低客户的成本。如下所示，通过 `perf stat` 命令可采集一段时间硬件性能指标数据。

```bash
Performance counter stats for process id '3260':

   182250.331423      task-clock (msec)         #   18.221 CPUs utilized
      3,259,379      context-switches          #    0.018 M/sec
      1,628,966      cpu-migrations            #    0.009 M/sec
               51      page-faults               #    0.000 K/sec
442,995,845,816      cycles                    #    2.431 GHz
226,812,458,841      instructions              #    0.51  insn per cycle
   45,556,284,037      branches                  #  249.965 M/sec
      662,510,643      branch-misses             #    1.45% of all branches

   10.002402740 seconds time elapsed

```

### 性能调优步骤

性能调优主要步骤如下所示：

1. 确定优化目标

      1. 吞吐量：吞吐量主要关注 CPU 信息和组件瓶颈，目前 ODP 和 OceanBase 数据库都可以将 CPU 跑满
      2. 延迟：需要关注访问链路上组件数量和每一段耗时，网络延迟也是重要因素
      3. 经验：从全局考虑，越靠近业务侧优化效果可能更明显
 2. 压力测试及信息采集：除了采集目标数据外，还需要采集每个组件的 CPU 消耗、网络延迟等数据
 3. 分析压力确定性能瓶颈：通过上面采集数据，先确定导致瓶颈点的组件，再继续细致分析
 4. 实施优化：目前优化主要是调整参数、调整部署等，特殊情况需要修改代码发版本解决
 5. 确认优化效果：主要关注延迟和吞吐量是否满足客户要求或测试成绩

## ODP 性能

### 相关数据总结

性能相关数据总结如下：

- qps = 并发数 * (1000ms / rt)
 - rt = 1000ms / (qps / 并发数)
 - 同机房网络延迟基本在 100us 以内
 - OceanBase 数据库转发的效率不到 ODP 转发效率的 50%

ODP 性能数据总结：

- 整机全部独占性能在 2w~3.5w 之间，受 CPU 型号等影响，如果压力小，不走 HT 性能会更高
 - 和 OceanBase 数据库混合部署下存在抢占，对 ODP 做负载均衡性能会更好
 - 相较于其他部署方式，部署在客户端是性能最好的方式
 - 支持 ARM 平台，但 ARM 平台性能没有 x86 系统好

### 问题处理

ODP 的主要问题是 QPS 和 RT：

- QPS：一般可以通过扩容解决，若无法扩容则考虑提升单机性能。若 CPU 足够但是 QPS 上不去则需要根据具体问题分析
 - RT：通过查看 Slow Query 日志可以看 ODP 耗时，ODP 本身耗时在 us 级别，整体架构对 RT 影响更大

在处理问题时，一定要区分实现的目标是什么，比如 ODP 成为瓶颈后（CPU 满了），导致 OMS 迁移数据慢，扩充 ODP 实例个数可以更快解决问题。

### 线程模型

通过 top 的 `-H` 参数可以看线程情况，ODP 的工作线程是 obproxy 和线程名以 ET NET 开头的线程。ODP 做到了线程之间基本无共享，所以每个线程可以独立工作，对于每个请求，均衡分发到每个工作线程中。

![模型图](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odp/V4.2.1/zh-CN/900.o-m-guide/1.png)

### 参数调整

性能调优涉及到的主要参数如下：

```sql
alter proxyconfig set enable_compression_protocol=false; --关闭压缩，降低cpu%
alter proxyconfig set proxy_mem_limited='16G'; --防止oom，可根据实际环境动态调整
alter proxyconfig set enable_prometheus=false;
alter proxyconfig set enable_metadb_used=false;
alter proxyconfig set enable_standby=false;
alter proxyconfig set enable_strict_stat_time=false;
alter proxyconfig set use_local_dbconfig=true; --3.x系列才有
alter proxyconfig set work_thread_num= xxx; --xxx要小于等于实际的核数

```

### 路由准确性

因为 OceanBase 数据库转发效率没有 ODP 高，所以核心场景 ODP 的路由准确性非常重要，最好做到都为 local 计划；非核心场景可以不这么严格要求。目前 ODP 支持了普通表、分区表、LDC、Primary Zone 等情况的路由，详细信息请参考 [数据路由](https://www.oceanbase.com/docs/common-odp-doc-cn-1000000001600979) 一章。

### 进程性能分析

#### 线程模型数据

恒定 10W qps 数据下 CPU 消耗如下表所示：

| 线程数 | qps | CPU | IPC | 上下文切换 |
| --- | --- | --- | --- | --- |
| 4 | 100021.12 | 3.979 | 0.49 | 19746 context-switches # 0.165 K/sec     4043 cpu-migrations # 0.034 K/sec |
| 8 | 99985.25 | 5.816 | 0.36 | 1294736 context-switches # 0.007 M/sec (100.00%)     19267 cpu-migrations # 0.110 K/sec (100.00%) |
| 12 | 99943.38 | 6.763 | 0.33 | 2239606 context-switches # 0.011 M/sec (100.00%)     80049 cpu-migrations # 0.395 K/sec (100.00%) |
| 16 | 99912.43 | 7.345 | 0.31 | 2885634 context-switches # 0.013 M/sec (100.00%)     172082 cpu-migrations # 0.781 K/sec (100.00%) |
| 20 | 99959.15 | 8.102 | 0.33 | 3256951 context-switches # 0.013 M/sec (100.00%)     296914 cpu-migrations # 0.001 M/sec (99.99%) |
| 24 | 100032.52 | 8.156 | 0.29 | 3673410 context-switches # 0.015 M/sec (100.00%)     471850 cpu-migrations # 0.002 M/sec (100.00%) |

#### 工具查看

工具查看的主要方法如下：

1. top 命令

      1. 通过 top 命令实时查看 ODP 的 CPU 使用，如果 CPU 使用超过 OceanBase 数据库，其性能可能不正常，需进一步分析
      2. 通过 top -H 查看线程的 CPU 消耗，ODP 的线程消耗很平均
 2. perf 命令

      1. 通过 perf top 查看热点函数，目前 ODP 无函数占用超过 5%
      2. 通过 perf stat 查看硬件指标，在分析不同 CPU 时会有帮助
 3. 日志打印

   日志对性能损耗很大，可查看 ODP 日志生成速度，如果每 1~2s 就生成一份日志，对性能损害很大

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
