Skip to content

dble 内存溢出(OOM)了怎么办? #2830

Answered by PanternBao
PanternBao asked this question in Q&A
Discussion options

You must be logged in to vote

1. 首先应该自检

1.1 自检主要是为了简单确认:

  1. 应用sql本身查询的数据量过大导致dble的oom
  2. 业务流量增大,dble内存设置不够从而支撑不住这么大的流量
  3. dble本身的bug,导致内存泄露而引发的oom

1.2 如何自检?

1.2.1 监控自检

内存监控

查看服务器内存监控/dble堆内存使用监控,在oom的时段内是否有明显的波峰

  1. 若dble初始就占用较高的内存,直接参照步骤第二部分收集信息
网络流量监控

查看服务器dble/mysql网络流量监控

  • 注意oom时间段内dble网络流入量
  • 注意oom时间段内mysql的网络的流出量

如果dble网络的流入量与mysql的网络流出量基本持平或相差不大而导致的oom:

dble网络的流入量与mysql网络流出量相差很大,需要自检应用的sql是否存在广播查询等

  1. 看能否在应用端收集到数据量比较大的sql
  2. 通过explain检查下发到后端的语句,并评估一下这些语句的数据量
    • 数据量不正常,后端语句可能返回几十万,几百万,需要调整sql,尽可能增加过滤条件减少数据量
    • 注意下发语句是否有 distinct,group by这系列的操作,这些操作可能数据量达不到很大,但是由于dble会将这些数据缓存在内存中操作,也很容易造成oom,因此也需要关注。

若没有dble的监控,或者不在以上情况內,请参照第二部分信息收集信息提供给官方人员排查。

2. dble本身问题导致的内存泄露

收集下面的内容提交给官方

2.0 dble日志

dble.log,wrappe…

Replies: 1 comment

Comment options

PanternBao
Aug 19, 2021
Collaborator Author

You must be logged in to vote
0 replies
Answer selected by yanhuqing666
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
1 participant