本文主要内容:
腾讯云云函数预置并发功能是腾讯云提供的一种基于版本纬度上支持并发实例按照配置预先启动,防止云函数平台主动回收实例,尽可能保证当有并发请求来临时有对应数量的实例可以进行请求处理的功能。官方详细文档
因为云函数提供了定时预置并发功能, 可以更加灵活的为不同时间段的请求动态设置预置并发,减少了闲置预置并发的费用。为了帮助用户得到云函数的一个相对合理的预置并发数量的配置,提供了方便的计算脚本: Analytics-concurrency. 使用此脚本,用户只需要对基本的数据资料进行填充,即可得到一个基于云函数并发请求量计算出来的预置并发的参考配置。 提供了:
git clone git@github.com:serverless-components/Analytics-concurrency.git
npm install
resources
(如没有此文件夹,自行创建即可), 注意事项:
2021-10-10 00:01
, 2021-10-11 00:01
)的数值相加,然后求得所有日期的同一时间粒度的平均数。npm run build:data
, 执行成功之后,会在根目录生成 data.json
文件,包含了对resources
下的源数据分析:{
"date": [..., "2020-01-01 01:01", "2020-01-01 01:02",...],
"data": [..., 3, 2, ...]
}
1. `date`: 根据源数据中的时间及其粒度自动生成的日期数据, 其中 **年-月-日**字段是为了后面的图表而根据运行脚本的时刻自动生成的填充数据,没有实际意义. 上面的例子表示的基于**1分钟**为时间粒度生成的日期数据.
2. `data`: 根据每一天的源数据中的**并发执行个数**数据,自动计算得到。比如现在有两个源文件: `scf-2022-01-01.csv, scf-2022-01-02.csv`, 会把这两个文件中同一时间粒度(`01:01, 01:02`)的并发执行个数计算得到一个平均数值. 上面的例子表示这两个csv文件中 **01:01**时刻的并发执行个数的平均值是 **3**, **01:02** 时刻是 **2**.
3. 需要对 `data.json` 中生成的数据进行数据可视化,进而确定要统计的时间区间, 我们这里以`Echarts`图形库为例, 用户可自行选择合适的工具:
4. 打开[Echarts 在线编辑器](https://echarts.apache.org/examples/zh/editor.html?c=line-sections)
5. 将如下内容复制到编辑框中:
option = {
dataZoom: {},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross',
},
},
xAxis: {
type: 'category',
boundaryGap: false,
// prettier-ignore
data: [],
},
yAxis: {
type: 'value',
axisLabel: {
formatter: '{value}',
},
axisPointer: {
snap: true,
},
},
series: [
{
type: 'line',
smooth: true,
// prettier-ignore
data: [],
},
],
};
data.json
数据中的date
数据放置在上面数据结构的xAxis->data
中,data
数据放置在series->data
中,生成完整的可视化图表,观察数据走势,如果从某个时刻开始并发请求量大幅增加或者减少, 那么可能就是一个需要进行数据聚合的时间段, 因为不同时间段的的并发请求量差距较大,需要分别设置不同的预置并发才能满足请求流量。最终划分出多个时间区间.本文提到的时间聚合区间 就是指的在这一步观察出来的不同的时间段,而有了时间聚合区间之后我们才有了设置定时预置的基础,因为定时预置的前提就是在不同的时间段中,设置不同的预置并发数量
timeRange.json
文件中:[
["00:00", "02:00"],
["02:01", "08:59"],
["09:00", "23:59"]
]
上面的例子表示将以天为单位的时间粒度划分出 3 个时间聚合区间来对应不同时间段的并发请求数量的变化.
执行npm run build:result
生成预置并发预测数据: result.json
:
costTotal
: 代表一天中总的闲置预置并发的费用plan
:time
: 表示需要配置预置并发的时间区间count
: 表示在time
时间设置的预置并发数量itemCostTotal
: 表示在time
区间的的闲置预置并发费用cost
中的每一项代表在当前时间粒度中发生的并发请求数量以及对应的闲置预置并发费用.result.json
生成的结果数据,用户可以自行在腾讯云控制台上配置云函数所需要的预置并发数量{
"costTotal": "1.2",
"plan": [{
"time": ["00:00", "02:00"],
"count": 1,
"itemCostTotal": 0.3,
"cost": [
{
"time": "2022-01-05 0:0",
"concurrency": 2,
"itemCost": 0
}
],
"...."
}]
}
这里有几点脚本的使用注意事项:
resources
中填充的 CSV 数据,计算所有数据在同一时间粒度的平均值resources
中的 CSV 文件需要使用统一的时间粒度,比如 1 分钟,5 分钟, 1 小时