Performance 如何使脚本执行变慢?

Performance 如何使脚本执行变慢?,performance,node.js,cassandra,cpu-usage,Performance,Node.js,Cassandra,Cpu Usage,我的任务是:需要从“TABLE_from”中选择数据,修改它并插入到“TABLE_to”。主要的问题是脚本必须在生产环境中运行,并且不应该影响实时站点的性能,但是“TABLE_FROM”包含数亿行。将使用nodejs运行脚本。我们正在使用什么技术来解决此类问题?例如,如何使这个脚本运行“缓慢”或其他词“柔和”,以防止数据库和CPU过载 脚本执行的时间无关紧要。我使用Cassandra DB。示例代码: var OFFSET = 0; var BATCHSIZE = 100; var TIMEOU

我的任务是:需要从“TABLE_from”中选择数据,修改它并插入到“TABLE_to”。主要的问题是脚本必须在生产环境中运行,并且不应该影响实时站点的性能,但是“TABLE_FROM”包含数亿行。将使用nodejs运行脚本。我们正在使用什么技术来解决此类问题?例如,如何使这个脚本运行“缓慢”或其他词“柔和”,以防止数据库和CPU过载

脚本执行的时间无关紧要。我使用Cassandra DB。

示例代码:

var OFFSET = 0;
var BATCHSIZE = 100;
var TIMEOUT = 1000;
function fetchPush() {
    // fetch from TABLE_FROM, possibly in batches
    rows = fetch(OFFSET, BATCHSIZE);

    // push to TABLE_TO
    push(rows);

    // do next batch in timeout
    setTimeout(fetchPush, TIMEOUT);
}

这里我假设fetch和push是阻塞调用,对于异步处理,您可以(显然)使用。

您可以设置作业队列并在setInterval()内运行脚本吗?我有正在运行的作业服务器(nodejs-KUE模块)。因此,您建议将作业分成小块,并将它们添加到队列中(间隔时间)?我还考虑过使用setInterval来减慢脚本的速度,但不确定这是一种好方法吗?setInterval()不是用来减慢速度,而是用来将工作分成均匀分布的部分。就时间而言,一份工作要花多少钱?如果小于20毫秒,则可以每100毫秒左右运行一次。如果你沿着这条路走下去,不要使用setInterval,而是在上一个作业完成时使用setTimeout。如何在为nodejs使用异步模块时设置超时?好的,我找到了。需要在每个函数中为回调使用async.series(下一个函数在上一个已完成的函数上运行)和setTimeout。伟大的实际上,您可以使用
async.falter()
将第一步的输出(在本例中是行)作为下一步的参数传递。但这在逻辑上与
async.series()
相同,变量在公共范围内。