持久的功能性能问题

时间:2019-10-22 22:46:12

标签: azure azure-functions azure-durable-functions

如果下面是我的协调器代码,那么我将结合使用链接和扇入/扇出

    const df = require("durable-functions");
const geocodeActivity = "getActualData";
const getDataActivity = "getDataFromDB";
const ld = require('lodash')

module.exports = df.orchestrator(function* (context) {
const outputs = [];
const parallelTasks = [];
try {
let payload = context.bindingData.input;
payload.dataType = "truth";
let truthData = yield context.df.callActivity(getDataActivity, payload);

    for (const data of truthData) {
        const truthDataObj = payload;
        truthDataObj.data = data;
        //console.log("ORCHESTRATOR: " + JSON.stringify(truthDataObj));
        parallelTasks.push(context.df.callActivity(geocodeActivity, ld.cloneDeep(truthDataObj)));
    }
    let actualData = yield context.df.Task.all(parallelTasks);
    let uploadDataInfo = payload;
    uploadDataInfo['actual_data'] = actualData;
    let uploadedCsv = yield context.df.callActivity("uploadActualData", uploadDataInfo);
    if (uploadedCsv == false || uploadedCsv == null || uploadedCsv === undefined) {
        outputs.push("failed");
    } else {
        outputs.push(uploadedCsv);
    }

} catch (err) {
    context.log(JSON.stringify(err));
    outputs.push('-1');
}
return outputs;

我有以下发现

很多时候,协调器一直处于运行状态

被称为getDataActivity的第一个Activity从数据库返回记录,记录最多可达百万行,每行包含至少20列

然后我遍历每条记录并执行一些操作

但是我多次观察到它卡在运行中,或者有时正在运行Orchestrator的服务器重新启动

与“ GetDataActivity”返回的大量数据有关吗? 如果是的话,您的建议是什么,我该怎么解决

1 个答案:

答案 0 :(得分:0)

此错误来自内存不足。堆内存消耗超过限制,JavaScript使您的进程崩溃。要将其设置得更高,可以使用context。但是请不要设置得太高,因为它会导致系统内存不足。

--max-old-space-size的用法:

--max-old-space-size