2.18 性能观测以及调试概览

  • Btrace脚本性能观察(观察查询过程中每个不同阶段的耗时)
  • manager命令show @@thread_used观察(观察不同线程的负载情况)

2.18.1 Btrace脚本观察

2.18.1.1 观察

Dble源码中自带观测脚本,BTraceCostTime.java文件是专用的Btrace观测脚本,当前脚本适用Btrace v.1.3
Btrace 相关资料https://github.com/btraceio/btrace
开启性能观察的统计需要配置server.xml中的两个参数useCostTimeStat和costSamplePercent,分别是启用耗时监控的标志位以及耗时监控的采样百分比,useCostTimeStat = 1的状态下耗时监控被开启,并且以costSamplePercent的概率进行统计,默认的采样率是1%,采样率过低有可能导致btrace脚本输出没有统计结果的情况,采样率过高则会影响性能本身。 脚本中包含几个统计点如下图所示:
18_performance_checkpoint 通过执行btrace监控正在运行的dble,可以获得类似以下的结果图:

18_performan_result 以上输出值有效信息为Block,Invocations,WallTime. , 而SelfTime.由于btrace的原因 不准确,可以忽略。
其中通过记录一个查询在每个记录点的时间点来观察是否存在某个中间步骤耗时过长,并进行针对性的优化和调整

2.18.1.2 调整策略

  • 1-0的耗时增长:需增大server.xml中processorExecutor的值 (其中0比表示dble开始读到某条语句时的时间,即初始值:0,所以1-0的时间就是request->1.startProcess的输出值,不需要进行计算)
  • 4-3的耗时增长:需增大server.xml中backendProcessors的值
  • 5-4的耗时增长:需增大server.xml中backendBusinessExecutor的值

2.18.2 Manager命令观察

2.18.2.1 观察

Dble 在18.02.0版本中新添加了manager端口的性能观测命令,可以通过命令查看各个线程的负载情况,需要配合在配置文件server.xml中的新增参数useThreadUsageStat进行使用
使用命令show @@thread_used会返回各个dble中关键线程最近时间的负载情况,如下示例
18_show_thread_used_result

  • BussinessExecutorX
    面向前端的业务处理线程,主要处理前端请求的解析,sql解析路由,下发查询到mysql实例等
  • backendBusinessExecutorX
    面向后端的业务处理线程,主要处理后端mysql查询结果的返回解析,结果聚合,并发回结果到client
  • $_NIO_REACTOR_FRONT_X
    前端请求接受线程,负责请求的接收和读取,之后把数据处理交给BussinessExecutor进行
  • $_NIO_REACTOR_BACKEND_X
    后端请求接收线程,负责mysql返回信息的接收和读取,之后把数据交给backendBusinessExecutor处理

2.18.2.2 调整策略

当输出的统计结果中,有一个或者多个类型的线程使用率过高(经验值为超过80%),可以适当调整对应的处理线程的数量

  • processors 参数控制前端_NIO_REACTOR_FRONT_X的数量
  • backendProcessors 参数控制后端_NIO_REACTOR_BACKEND_X的数量
  • backendProcessorExecutor 参数控制backendBusinessExecutorX数量
  • processorExecutor 参数控制BussinessExecutorX数量

results matching ""

    No results matching ""