我一直在与Dokku和Docker一起开展部署工作流程,现在我想要关注我的应用程序的连续性(沿着Forever的路线).为了测试它,我需要一种方法来故意崩溃我的应用程序.
我用一个应该破坏我的应用程序的函数创建了一个新的路径'/ crashme'.
到目前为止,还没有找到一种在node/nodemon本地工作的方法,我尝试过:
这些东西都不会使应用程序崩溃到需要重新启动的程度.
我怎么能把它搞定?
Gol*_*den 22
我想到了三件事:
process.exit
.这肯定会使您的应用程序进入需要重新启动的状态.while (true) {}
.这应该使Node.js使用100%的CPU,因此应该重新启动应用程序(当然,这意味着你/某人必须看你的应用程序).要添加到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;
}
Run Code Online (Sandbox Code Playgroud)
我曾尝试在Express中使用/ crash路由进行类似操作,但是仅从路由处理程序中引发错误并不足以使其崩溃。
process.exit将停止我的应用程序,但永远不会重新启动它。(永远的日志只说了诸如进程自身终止之类的东西。)
对我有用的是将其插入我的/crash
路线中:
setTimeout(function () {
throw new Error('We crashed!!!!!');
}, 10);
Run Code Online (Sandbox Code Playgroud)
并添加到DrakaSAN的答案,一个更简单的 C 模块崩溃:
int main()
{
*(int*)(0) = 0;
return -1;
}
Run Code Online (Sandbox Code Playgroud)
本页还提供更短的文件。如果您不希望它太难阅读,您可以选择
int main()
{
int i=1/0;
}
Run Code Online (Sandbox Code Playgroud)