3

我每隔一小时左右对我的数据库进行一次例行检查

setInterval(function() {
  myCheckFunction();
}, 3600000)

我在想类似的东西:

setInterval(function() {
  server.getConnections(function(err, count) {
    if (count < X) {
      myCheckFunction();
    }
}, 3600000)

检查现在是否没有太多工作要做。

这是个好主意吗 ?如果是这样,X 可以有什么价值?如果不是,我应该尝试不同的方法还是只进行测试,而不考虑当前负载?

我不希望有数百万的连接,这只是一个概念证明,我的老师让我照顾那种事情。

谢谢 !

编辑:为什么我要避免重载?因为例行检查可能需要几分钟时间,并且需要为服务器做大量工作。它必须为数据库中的每个条目联系至少 5 个 DNS 服务器,请求 HTML 代码并对其进行哈希处理,然后比较答案。由于 DNS 服务器可能超时并且数据库与项目分开托管,因此检查一个条目可能需要长达 6 秒的时间。

4

2 回答 2

1

这就是您要查找的内容:

太忙了

于 2013-06-08T12:32:39.270 回答
0

有了这个特殊要求,我将在服务器端执行此检查。

var checkFunctionCaller = function () {
    //call async function on server side and provide a callback function
    //to be called as server returns an answer
    server.myCheckFunction(function (result) {
        // if server was able to run check - it return 'done' and everything is fine
        if(result === "done") {
          //do nothing
        }
        //otherwise, re-schedule a check in five minutes
        setTimeout(checkFunctionCaller, 5 * 60 * 1000);
    });
}


setInterval(checkFunctionCaller, 3600000);
于 2013-06-08T11:57:03.450 回答