如果下面是我的协调器代码,那么我将结合使用链接和扇入/扇出
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”返回的大量数据有关吗? 如果是的话,您的建议是什么,我该怎么解决
答案 0 :(得分:0)
此错误来自内存不足。堆内存消耗超过限制,JavaScript使您的进程崩溃。要将其设置得更高,可以使用context
。但是请不要设置得太高,因为它会导致系统内存不足。
--max-old-space-size
的用法:
--max-old-space-size