记录线上presto集群崩溃

公司线上presto集群在周末有大量的任务失败,查看了下机群的负载,除了coordinator,所有worker的cpu和内存基本上都耗尽了,查看日志,出现了很多worker节点被下线的情况,查看jvn进程,出现了很多次FUll GC,而且时间非常长

首先我们判断是不是网络问题,因为我们这边的数据主要是hdfs和mysql,在和网络同时沟通测试后,确定presto集群访问hdfs和mysql这两条数据链路都没有网络异常情况,并且hdfs和mysql也没有做任何配置上的修改

之后我们怀疑是否有增量的大数据查询任务(之前我们把所有的查询都存到数据库中),查询数据库,并没有增量任务,并且也没有异常查询

在确定非外界因素之后,那只有硬着头皮去调参,首先我们着手怎样减少Full GC,无奈各种调参,效果都不是很明显,再一次说明,如果你不是巨牛,jvm调参这种方案,一定要放在最后

之后我们,我们换了一种思路,减少每个实例heap内存,部署多个实例,之前每个实例heap内存都配置了55G,我们降到了40G,之前一个机器上部署了2个实例,现在变成了3个;换了部署方案后,full gc确实少一点,但是集群还是会出现崩溃的问题

想到集群负载高,我们试着着手去限制每个用户队列同时运行任务数,于是我们把之前每个用户最多运行任务数从10个降到3(这个是一步一步调下来的结果,起初尝试了8,5),果然集群基本上没有了full gc,虽然查询时间会长一点,但总算抗住了计算峰值(有钱的话就直接加机器吧)

贴个资源配置文件,大家参考下resource.json

{
  "rootGroups": [
    {
      "name": "global",
      "softMemoryLimit": "80%",
      "maxRunning": 100,
      "maxQueued": 1000,
      "jmxExport": true,
      "subGroups": [
        {
          "name": "adhoc_${USER}",
          "softMemoryLimit": "30%",
          "maxRunning": 3,
          "maxQueued": 20
        },
        {
          "name": "pipeline",
          "softMemoryLimit": "20%",
          "maxRunning": 3,
          "maxQueued": 100,
          "jmxExport": true,
          "subGroups": [
            {
              "name": "pipeline_${USER}",
              "softMemoryLimit": "10%",
              "maxRunning": 3,
              "maxQueued": 100
            }
          ]
        }
      ]
    },
    {
      "name": "admin",
      "softMemoryLimit": "100%",
      "maxRunning": 100,
      "maxQueued": 100,
      "jmxExport": true
    }
  ],
  "selectors": [
    {
      "user": "presto_admin",
      "group": "admin"
    },
    {
      "source": ".*pipeline.*",
      "group": "global.pipeline.pipeline_${USER}"
    },
    {
      "group": "global.adhoc_${USER}"
    }
  ],
  "cpuQuotaPeriod": "10h"
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于Presto集群的部署,可以按照以下步骤进行操作: 1. 确保你有一个运行Java的环境,Presto是用Java编写的。你可以从官方网站下载并安装Java Development Kit(JDK)。 2. 下载Presto服务器的二进制文件。你可以从Presto官方网站的下载页面获得最新版本的二进制文件。 3. 解压缩下载的二进制文件到你想要安装Presto的目录中。 4. 配置节点信息。在Presto安装目录下的etc目录中,有一个配置文件叫做`node.properties`,你需要编辑这个文件,指定集群中每个节点的唯一标识符和通信地址。 5. 配置集群连接信息。在etc目录中,有一个配置文件叫做`config.properties`,你需要编辑这个文件,指定连接到Presto集群所需的信息,比如访问控制、元数据存储等。 6. 配置分布式查询协调器。在etc目录中,有一个配置文件叫做`coordinator.properties`,如果你打算使用Presto集群中的一个节点作为协调器节点,你需要编辑这个文件,并指定协调器节点的配置信息。 7. 配置工作节点。在etc目录中,有一个配置文件叫做`worker.properties`,如果你打算使用Presto集群中的某些节点作为工作节点,你需要编辑这个文件,并指定每个工作节点的配置信息。 8. 启动Presto集群。在Presto安装目录下执行命令`./bin/launcher start`或者`./bin/launcher run`以启动Presto集群。前者以守护进程方式启动,后者将在前台运行。 9. 进入Presto CLI。在Presto安装目录下执行命令`./bin/presto-cli`以进入Presto CLI,你可以使用CLI与Presto集群进行交互查询。 这些是基本的Presto集群部署步骤,你可以根据你的特定需求和环境进行配置和调整。请确保在部署之前,详细阅读Presto官方文档并遵循最佳实践。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值