如何故意破坏我的Node应用程序?

时间:2013-12-30 13:45:58

标签: node.js

我一直在与Dokku和Docker一起开展部署工作流程,现在我想要关注我的应用程序的连续性(沿着Forever的路线)。为了测试它,我需要一种方法来故意破坏我的应用程序。

我用一个应该破坏我的应用程序的函数创建了一个新的'/ crashme'路径。

到目前为止,还没有找到一种在node / nodemon本地工作的方法,我试过了:

  • 除以零
  • 抛出新用户例外
  • 引用不存在的变量

这些事情都不会使应用程序崩溃到需要重新启动的程度。

我怎么能把它搞定?

4 个答案:

答案 0 :(得分:19)

我想到了三件事:

  • 您可以致电process.exit。这肯定会使您的应用程序进入需要重新启动的状态。
  • 另一种选择可能是运行无限循环,例如while (true) {}。这应该使Node.js使用100%的CPU,因此应该重新启动应用程序(当然,这意味着你/某人必须看你的应用程序)。
  • 在C中创建一个崩溃的模块,例如:试图访问内存中的随机位置。我手头没有这样的模块,但我很确定C技能的人应该很容易编写这样的模块。

答案 1 :(得分:7)

要添加到Golo答案:

C模块因分段错误而崩溃:

int main ()
{
    //Create a array of 1 char
    char a [1];
    //Create a index
    int i = 0;
    //Infinite loop to go around the compiler
    while(1)
    {
        //Write on case i of a, on the second iteration, it will write in unreserved memory => crash
        a[i] = 0;
        i = i + 1;
    }
    //Should not go there
    return -1;
}

答案 2 :(得分:4)

并添加DrakaSAN的答案,更简单的C模块崩溃:

int main()
{
    *(int*)(0) = 0;
    return -1;
}

答案 3 :(得分:4)

我在express中使用/ crash路径尝试了类似的事情,但只是在路由处理程序中抛出错误并不足以使其崩溃。

process.exit会停止我的应用,但永远不会重启它。 (永远的日志只是说过程自我终止。)

为我工作的是将其插入我的/crash路线:

setTimeout(function () {
      throw new Error('We crashed!!!!!');
}, 10);