背景Trino 集群如果不做任何配置优化,按照默认配置上线,Master 和 Worker 节点都很容易发生 OOM 。本文从 Trino 内存设计出发,分析 Trino 内存管理机制,到限制与优化内存分配,使 Worker 节点不易发生 OOM 。
Trino 内存类型Trino(version 400)只有一个内存池,由 Coordinator 来管理这个内存池,即管理集群内存 。Coordinator 协调员一般为集群 Master 节点,Master 节点负责 SQL 解析、分析、优化以及分配查询 Task 给 Worker 节点;Worker 节点负责处理 Task,主要为 load 数据和计算数据,这也是集群内最吃资源的一块 。所以我们也是针对这块进行优化处理 。
Trino 内存管理机制Trino 会每 2s 做一次内存分析:
- 分析当前集群内存是否溢出
- 当前内存集群内存溢出:Trino 会检查当前集群内存溢出的持续时间,如果持续时间超过了预设值(默认5min),则会根据配置好的 Kill Query策略去 Kill 掉查询 。
- query-low-memory-killer-policy:
- none :不会杀死任何查询
- total-reservation :终止当前使用最多总内存的查询 。
- total-reservation-on-blocked-nodes:终止当前在内存不足的节点上使用最多内存的查询
- query-low-memory-killer-policy:
- 当前内存集群内存溢出:Trino 会检查当前集群内存溢出的持续时间,如果持续时间超过了预设值(默认5min),则会根据配置好的 Kill Query策略去 Kill 掉查询 。
- 分析当前时刻的所有查询是否超出了预设的内存上限
- 分析查询是否超出了 query.max-memory-per-node / query.max-memory / query.max-total-memory,超出则 kill 掉
- 这里 kill 掉查询的动作是有等待时间的 。Trino 默认设置是等待5分钟,5分钟后集群依旧是oom状态才会去 kill 掉查询,可以设置 query.low-memory-killer.delay 值来减少等待时间 。
Trino 资源组限制内存Trino 资源组也可以限制用户使用内存主要是通过 softMemoryLimit 限制内存的使用 。
官方文档softMemoryLimit (required): maximum amount of distributed memory this group may use, before new queries become queued. May be specified as an absolute value (i.e. 1GB) or as a percentage (i.e. 10%) of the cluster’s memory.意思是:在每个查询开始之前,会判断当前用户组使用集群的内存情况,如果超过了设定值,则在队列内等待 。直至该用户组使用集群内存降下到预设值 。如:下面配置的意思是,所有的用户都属于admin组,admin组限制了在集群内最高并发50条查询,最长等待队列是300;当admin使用集群内存超过80%时,查询需要在队列中等待 。
{"rootGroups": [{"name": "admin","softMemoryLimit": "80%","hardConcurrencyLimit": 50,"maxQueued": 300,}],"selectors": [{"user": ".*","group": "admin"}]}
优化思路:- 配置每个查询的使用的内存上限a. query.low-memory-killer.delay = 4GBb. query.max-memory = 8GBc. query.max-memory = 8GB
- 降低当集群内存不足时,降低 Trino kill query 的等待时间和 kill 查询的策略a. query.low-memory-killer.delay = query.low-memory-killer.delayb. query.low-memory-killer.delay = 10s
- 配置资源组,避免当集群内存负载高时插入新查询
- 开启 spill 选项,允许内存 load 到磁盘
经验总结扩展阅读
- 01.|婆媳之间只有保持一定的界限感,才能最大可能的规避婆媳之间矛盾
- 异性已婚男女的这些称呼,一定要彻底规避
- 本文转自:北京晚报遭遇亲人离世作为子女或孙子女悲伤之余 专业机构帮您规避继承纠纷隐患
- 人与人之间 你只有善于思考,懂得规避再次犯同样的错,才能走好剩下的路
- 男女之间的感情就像是一条抛物线 只有有效规避风险,经营感情才不会出现问题
- 以往的时代 做一个足够独立的自己,始终懂得规避一些不必要的风险
- 如何处理办公室婚外情?生活在城市圈中 如何正确规避和处理办公室婚外情呢?马上来了解
- 八字如何规避生活的麻烦
- 婚姻不顺怎么化解 怎么规避
- 试管孕期拉肚子可不是小事,该怎么规避和治疗?