环境
操作系统:CentOS Linux release 7.6.1810 (Core)
Doris版本:doris-2.1.5-bin-x64
Java版本:jdk1.8.0_181
3台机器组成的集群
所在场景
做大数据项目时使用Doris的catalog将来自不同主机的多个MySQL库相同的表数据汇总到另一个主机的MySQL库,就注册了多个catalog用于连接不同的mysql主机及数据库
由于需要每隔10秒做一个开窗操作计算物联网设备的亮灯及不同颜色的灯的持续时间等功能,刚好有Doris环境且适合做这块业务,就用SpringBoot+Doris实现了业务逻辑。
表现
跑了大概过2天就会出现Doris连接超时不可用的情况,重启FE就可以了。默认分配给FE master的内存是8G,观察发现FE重启后大概每1小时会使得内存占用多100M,慢慢的就将内存耗尽导致Doris FE无法链接了。
尝试解决
根据网上的建议将SQL连接的超时时间改为300秒(set global wait_timeout = 300)也无法解决此问题
又根据《如何快速定位线上Doris FE内存使用过高问题》推荐的方法去排查依然无法解决。
通过百度网盘分享的文件:如何快速定位线上Doris FE内存使用过高问题.pdf
链接:https://pan.baidu.com/s/1VQonTFi9YGLicGRdEuFwkQ?pwd=4uae
提取码:4uae
最后解决
然后找Doris官方文档,发现频繁refresh catalog xxx 会强制使对象相关的Cache失效,默认开启的采样也比较耗费资源,然后就将代码中refresh catalog全部注释掉,在fe.conf中添加
wait_timeout = 300
set global enable_auto_analyze = false
重启FE后观察了一下午,内存持续增长的问题没有再出现了。
此解决方案应该不能通用的解决所有FE使用内存持续上升的问题,仅将我自己遇到解决的方式记录下来,不保证能解决你的问题,如果刚好也能解决那时最好。如果还有其他原因并能解决,欢迎留下评论,先谢谢了
标签:300,catalog,FE,解决,Doris,内存 From: https://blog.csdn.net/k7gxn56/article/details/142878062