函数计算因为数据量过大超时的解决方案

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 我现在做的事情是把一个webtrack 的logstore 通过函数计算导入到另外一个logstore。函数计算的功能是把IP解析成地理位置和把UserAgent String解析成设备信息。 现在的问题是FunctionComputeServer有时会time out失败,但是失败后数据任然是成功插入的。
+关注继续查看
我现在做的事情是把一个webtrack 的logstore 通过函数计算导入到另外一个logstore。函数计算的功能是把IP解析成地理位置和把UserAgent String解析成设备信息。 
现在的问题是FunctionComputeServer有时会time out失败,但是失败后数据任然是成功插入的。不过ETL认为任务失败,不断重试,最后导致插入大量重复的数据。 
现在有一个解决方案就是减少函数的输入数据,这样就可以避免超时,不过我有一些问题。 
第一个问题:唯一能影响函数的输入数据量的设置只有函数的执行频率吗?我可以准确的指定输入量吗?
阿里答复:完备的触发器角度应该是要同时支持:size-based trigger、time-based trigger两种模式,但因为日志服务没有办法从流式数据订阅接口获取准确的日志条数,所以size-based trigger目前提供不了。抱歉。
第二个问题:因为这是个webtrack logstore,每个时间点的logstore产生量是不稳定的。我如何评估产生的shard数目和大小?有没有什么地方可以查看?有没有什么办法可以提前测试函数计算的 performance这样可以帮助我觉得合适的内存和超时设置?如果靠生产环境里面的情况来做决定,我只能等出了问题在尝试修改,那个时候已经太晚了。 
阿里答复: 一个shard支持5MB/s的数据写入,logstore的流量指标可以在这里看到:https://help.aliyun.com/document_detail/28971.html?spm=a2c4g.11174283.6.693.6IikRd。云监控中的指标应该可以通过sdk方式获取的,你可以基于这个值提前做shard分裂来扩容。


建议解决方案:
1. 将shard数目按照峰值情况进行预留
2. 将日志服务触发器的触发间隔设置为3秒,函数计算的超时间隔设置得高一些(比如2分钟)。我的考虑是:一般来说,函数偶尔超时,后续是可以慢慢赶上进度的(削峰填谷),我们容忍偶尔的超时(计算+IO作业,延时不太可控)。但如果一直超时,说明shard流量过高(分裂shard解决)或者是计算复杂度高(在函数端增加并发)。
3. 日志服务写数据本身是非幂等行为,例如在函数重复执行或者写入数据超时重试时可能引起数据重复。这个问题根本上难以解决,降低重复概率的一个可选方案是:在函数计算里面将本次已处理的数据saved_cursor记录到外部系统(例如表格存储),如果函数超时后再次执行,从表格存储获取上次处理进度,跳过已处理的部分数据,从saved_cursor位置继续开始处理。  
相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
8天前
|
关系型数据库 Serverless OLAP
构建高效数据流转的 ETL 系统:数据库 + Serverless 函数计算的最佳实践
构建高效数据流转的 ETL 系统:数据库 + Serverless 函数计算的最佳实践
|
8天前
|
关系型数据库 Serverless OLAP
构建高效数据流转的 ETL 系统:数据库 + Serverless 函数计算的最佳实践
为了实现完整的 ETL 架构,并完成高效、实时的数据集成、处理和同步,阿里云 Serverless 函数计算(FC)与数据库 CDC 技术深度融合。助力企业构建完整的 ETL 架构,实现数据的提取、转换和加载。通过将 CDC 作为事件驱动的数据源,将数据变化作为事件触发 Serverless 函数的执行,可以实现实时的数据处理和同步,有助于提升业务决策和分析的准确性和效率。
|
1月前
|
存储 Serverless
可以在函数计算FC中使用这些挂载目录来存储和访问你的文件和数据
可以在函数计算FC中使用这些挂载目录来存储和访问你的文件和数据
15 1
|
2月前
|
数据采集 Serverless Python
基于函数计算FC一键部署Stable Diffusion的数据怎么初始化格式化?
基于函数计算FC一键部署Stable Diffusion的数据怎么初始化格式化?
19 1
|
6月前
|
运维 JavaScript 前端开发
函数计算提供的音视频解决方案
函数计算提供的音视频解决方案
146 1
|
7月前
|
存储 运维 Cloud Native
《Serverless数据库技术研究报告》——三、 Serverless数据库技术趋势——(六)数据共享,打破Serverless数据库数据孤岛
《Serverless数据库技术研究报告》——三、 Serverless数据库技术趋势——(六)数据共享,打破Serverless数据库数据孤岛
|
10月前
|
Serverless
大依赖部署——解决函数计算上传代码包大小受限常见的解决方案
大依赖部署——解决函数计算上传代码包大小受限常见的解决方案自制脑图
1898 0
大依赖部署——解决函数计算上传代码包大小受限常见的解决方案
|
11月前
|
Serverless
Serverless应用场景——实时文件处理和数据 ETL 处理
Serverless应用场景——实时文件处理和数据 ETL 处理自制脑图
97 0
Serverless应用场景——实时文件处理和数据 ETL 处理
|
存储 物联网 机器人
物联网平台数据流转到函数计算|学习笔记
快速学习物联网平台数据流转到函数计算
131 0
物联网平台数据流转到函数计算|学习笔记
|
消息中间件 弹性计算 运维
函数计算FC助力游戏群采集营销数据滴水不漏
稳定、高可靠的采集数据并回传以及成本最优化是客户的核心诉求,为了同时实现高性能和成本最优化,游戏群选择阿里云函数计算FC为该业务场景兜底。
1421 0
函数计算FC助力游戏群采集营销数据滴水不漏
热门文章
最新文章
相关产品
云迁移中心
推荐文章
更多