大数据计算MaxCompute成本突然增加了2倍,想知道这个要怎么查询一下原因呢?

我们这边发现在5月初,大数据计算MaxCompute成本突然增加了2倍,想知道这个要怎么查询一下原因呢?

展开
收起
真的很搞笑 2023-09-17 19:21:48 81 分享 版权
阿里云 AI 助理回答

要排查5月初MaxCompute成本突然增加2倍的原因,您可以按照以下步骤进行详细分析和定位问题。以下是具体的排查方法和操作建议:


1. 确认费用超支日期及具体项目

首先,通过阿里云费用中心确认费用超出预期的具体日期,并定位到当天产生高额费用的项目和计费项。

  • 操作步骤
    1. 登录阿里云费用中心。
    2. 查看账单明细,筛选出5月初费用异常增长的日期。
    3. 确认具体是哪个MaxCompute项目中的哪些计费项(如计算、存储或公网流量)导致了费用突增。

2. 分析消费上涨原因

根据费用中心的初步定位结果,进一步分析具体的消费上涨原因。可能的原因包括计算费用、存储费用或公网下行流量费用的异常增长。

2.1 计算费用异常排查

如果发现计算费用超出预期,可以通过Information Schema视图中的TASKS_HISTORY数据统计作业量和TOP费用作业。

  • 操作步骤

    1. 登录MaxCompute客户端或使用SQL分析工具,切换到高额消费的项目。
    2. 执行以下SQL查询,获取费用最高的SQL作业及其执行信息:
      set odps.sql.decimal.odps2=true;
      SELECT 
      inst_id, -- 实例ID
      input_bytes, -- 数据输入量(字节)
      complexity, -- SQL复杂度
      CAST(input_bytes / 1024 / 1024 / 1024 * complexity * 0.3 AS DECIMAL(18,5)) AS cost_sum, -- 费用估算
      get_json_object(settings, "$.SKYNET_ID") AS SKYNET_ID -- DataWorks调度任务ID
      FROM information_schema.tasks_history
      WHERE (task_type = 'SQL' OR task_type = 'SQLRT') 
      AND ds = '20230501' -- 替换为具体日期分区
      ORDER BY cost_sum DESC
      LIMIT 10000;
      
    3. 根据查询结果,检查是否有异常的SQL作业(如全表扫描、重复执行等)。
  • 重要提示

    • 如果某条SQL作业的input_bytes(输入数据量)较大,可能是由于全表扫描或未优化的查询条件导致的。
    • 如果发现重复执行的作业,可以通过以下SQL分析作业增长趋势:
    SELECT signature, ds, COUNT(*) AS tasknum
    FROM information_schema.tasks_history
    WHERE (task_type = 'SQL' OR task_type = 'SQLRT')
      AND ds >= '20230501'
    GROUP BY ds, signature
    ORDER BY tasknum DESC
    LIMIT 10000;
    

2.2 存储费用异常排查

如果存储费用超出预期,可以通过下载用量明细分析存储费用变化。

  • 操作步骤

    1. 在费用中心下载5月初的用量明细文件。
    2. 将用量明细上传至MaxCompute进行分析,参考[MaxCompute账单用量明细分析]文档中的SQL示例,查看存储费用的变化趋势。
    3. 检查是否有大表未删除或数据生命周期设置不合理的情况。
  • 优化建议

    • 合理设置数据分区:通过多级分区减少数据扫描量,提升查询效率,降低费用。
    • 设置合理的表生命周期:根据数据使用频率设置表的生命周期,自动清理过期数据,节约存储空间。

2.3 公网下行流量费用异常排查

如果公网下行流量费用超出预期,可以通过TUNNELS_HISTORY视图统计公网下行流量费用变化。

  • 操作步骤
    1. 执行以下SQL查询,统计公网下行流量费用:
      set odps.sql.decimal.odps2=true;
      SELECT 
      ds, 
      operate_type, 
      SUM(CAST(data_size / 1024 / 1024 / 1024 * 0.8 AS DECIMAL(18,5))) AS download_fee
      FROM information_schema.tunnels_history
      WHERE (operate_type = 'DOWNLOADLOG' OR operate_type = 'DOWNLOADINSTANCELOG')
      AND ds >= '20230501'
      GROUP BY ds, operate_type
      ORDER BY download_fee DESC;
      
    2. 根据查询结果,检查是否有异常的公网下载行为。

3. 检查调度任务配置

如果您的MaxCompute作业是通过DataWorks调度的,还需要检查调度任务的配置是否发生了变化。

  • 常见问题

    • 补数据操作:如果在5月初进行了大规模的补数据操作,可能会导致费用显著增加。例如,补30天的数据且调度周期为天,则补数据操作会被执行30次。
    • 调度周期变更:如果将调度任务的调度周期从“天”改为“小时”,运行次数会大幅增加,从而导致费用上涨。
  • 优化建议

    • 定期检查DataWorks调度任务的配置,避免不必要的补数据操作。
    • 合理设置调度周期,避免频繁运行低效的作业。

4. 总结与后续优化

完成上述排查后,您应该能够定位到费用突增的具体原因。针对不同的问题,可以采取以下优化措施:

  • 计算费用优化
    • 避免全表扫描,尽量使用分区查询。
    • 合并小批量的UPDATEDELETE操作,减少资源消耗。
  • 存储费用优化
    • 定期清理无用数据,设置合理的生命周期策略。
    • 使用Compaction操作优化存储结构,减少冗余数据。
  • 公网流量优化
    • 尽量使用内网传输数据,避免公网下载。

通过以上步骤,您可以有效定位并解决5月初MaxCompute成本突增的问题。如果仍有疑问,建议联系阿里云技术支持团队获取进一步帮助。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答

MaxCompute(原ODPS)是一项面向分析的大数据计算服务,它以Serverless架构提供快速、全托管的在线数据仓库服务,消除传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您经济并高效的分析处理海量数据。

还有其他疑问?
咨询AI助理