首页 > 其他分享 >Trino Master OOM 排查记录

Trino Master OOM 排查记录

时间:2023-03-13 13:45:12浏览次数:34  
标签:jvm OOM 查询 master file SQL Master Trino trino

背景

最近线上的 trino 集群 master 节点老是因为 OOM crash,我们注意到 trino crash 前集群正在运行的查询数量正常,不太像是因为并发查询数据太多导致的 OOM。遂配置 trino master 的 jvm,使其在崩溃后生成一份 dump 文件,方便我们进行问题排查。

排查问题过程

收集到了 Trino master oom dump 文件,用 mat 工具对其分析得出报告。
从报告得知,trino master crash 前有一条查询消耗掉了大量资源,还有一大堆的 DeleteFileIndex 实例也消耗掉很多资源。

我们有收集 trino 上所有的查询语句,通过 query_id 定位到那条异常 SQL。初看 SQL 逻辑,没太大问题,应该不会导致 trino master oom。
于是找一个 trino 集群做故障还原,发现并发执行 异常SQL 4条,master 就会 crash。
于是进 trino-master 容器内,用 arthas 实时观察 jvm 状况。
发现当 异常SQL 发起查询时,jvm 内 iceberg-work-pool 线程的 cpu 暂用率会飙升到 100%,且此时 jvm 内存也在飙升,过程持续 20s,刚好是异常SQL 生成执行计划所花费的时间。

然后使用 arthas 查看 iceberg-work-pool 线程在干嘛?发现其在调用 DeleteFileIndex 这个类,在报告里面也是属于 top 10 comsumer 。

看栈信息,得到信息在扫描 iceberg 的 manifestlist 时,会去扫描已删除的文件。猜测大概率是需要找到已删除的数据 和 现在存在的数据 做一个 merge,才是当前快照的真实数据。

于是分析 怀疑表 nft_orders_v2 的元数据信息,发现 snapshow 里需要读取大量的删除文件。

snapshots

而 Trino 是使用 merge on read 模式进行 merge/update/delete 操作的,这样的话每次查询时,得扫描 "delete file" 来和 "data file" 进行合并,得出真实数据。

所以问题就出现在这,由于该表每半小时生产一次,底层存在大量的 'delete file' ,每次查询时都要扫描这些 'delete file' 然后做 merge 操作生成执行计划。这步操作消耗掉很多 cpu资源和内存资源,导致 trino master 节点崩溃。

解决方案

使用 trino 的小文件合并功能,重写底层数据文件即可修复。

ALTER TABLE nft_orders_v2 EXECUTE optimize (file_size_threshold => '100MB')

为了规避此类问题再次分析,还需要找出哪些查询的查询计划时间大于 10s,找出这些查询并分析用到的表的元数据是否合理,不合理要及时修正。

标签:jvm,OOM,查询,master,file,SQL,Master,Trino,trino
From: https://www.cnblogs.com/meicanhong/p/17211059.html

相关文章

  • ! [rejected] master -> master (fetch first)
    参考文档:gitpush后出现错误![rejected]master->master(non-fast-forward)问题/原因如果不确定本地版本是否是最新,最好先gitpullGit仓库中已经有一部分代码,所......
  • 容器内微服务OOM问题排查及解决
    背景问题现象:测试环境,有一个功能的所有接口请求超时,查看微服务下的日志,发现OOM了问题环境:Kubernetes环境,微服务部署在pod的容器中 问题排查1、环境出现问题时,首先查......
  • 当k8s做集群高可用的时候,需要将另一个master加入到当前master failure loading certif
      解决办法:[root@k8s-master2~]#mkdir-pv/etc/kubernetes/pkimkdir:createddirectory‘/etc/kubernetes/pki’[root@k8s-master2~]#mkdir-pv/etc/kuberne......
  • Opengl-Bloom
    Thebloomchapteriscomplicated.Itcombinesalltheideasfromthechapterswehavelearn.ExtractingbrightcolorGaussianblurBlendingbothtexturesEx......
  • mysql内存,mysql oom
    转自:https://mp.weixin.qq.com/s/YYwJM_WZdDG0YFd7Bj380Q1、什么是OOM机制OOM 是OutOfMemory的缩写,中文意思是内存不足。而 OOM机制 是指当系统内存不足时,系统触......
  • 性能测试-模拟oom场景
    1、模拟环境搭建1.1tomcat下载与搭建下载地址:https://tomcat.apache.org/download-90.cgi   1.2解压安装cd/data/jvmpretest#解压tar-zxvfapache-tomc......
  • echarts实现dataZoom区域缩放并修改高度、不与横坐标轴重叠
        参考:https://blog.csdn.net/weixin_46074961/article/details/105950300       https://blog.csdn.net/menghuannvxia/article/details/88736166......
  • java服务OOM和CPU飙升排查
    一、JVM参数-D可以是系统默认有的参数,也可以是自己定义的参数-Dfile.encoding=UTF-8-Dmaven.test.skip=true-Dspring.profiles.active=test-Dhsf.server.port=1240......
  • 【深入浅出 Yarn 架构与实现】4-5 RM 行为探究 - 启动 ApplicationMaster
    本节开始,将对ResourceManager中一些常见行为进行分析探究,看某些具体关键的行为,在RM中是如何流转的。本节将深入源码探究「启动ApplicationMaster」的具体流程。一、......
  • 一次线上OOM问题分析
    现象线上某个服务有接口非常慢,通过监控链路查看发现,中间的GAP时间非常大,实际接口并没有消耗很多时间,并且在那段时间里有很多这样的请求。原因分析先从监控链路分析了......