如何崩溃我的节点应用程序的目的?
我一直在与Dokku和Docker一起部署工作stream程,现在我想要关注我的应用程序的连续性(沿着Forever的路线)。 为了testing它,我需要一种故意让应用程序崩溃的方法。
我创build了一个新的路线“/ crashme”与应该破坏我的应用程序的function。
到目前为止还没有find与node / nodemon本地工作的方式,我试过了:
- 被零除
- 抛出一个新的用户exception
- 引用一个不存在的variables
这些东西都没有使应用程序崩溃到需要重新启动的地步。
我怎么能把它拿下来?
我的脑海里有三样东西:
- 你可以调用
process.exit
。 这肯定会将您的应用程序置于需要重新启动的状态。 - 另一个选项可能是运行一个无限循环,比如
while (true) {}
。 这应该使Node.js使用100%的CPU,因此也应该重新启动应用程序(虽然这当然意味着你/某人不得不看你的应用程序)。 - 在C中创build一个模块,例如试图访问内存中的一个随机的地方崩溃。 我手边没有这样的模块,但是我非常肯定,具有C技能的人员应该很容易编写这样的模块。
添加到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; }
并增加DrakaSAN的答案,一个更简单的C模块崩溃:
int main() { *(int*)(0) = 0; return -1; }
我正在尝试一个类似的事情与快速/崩溃的路线,但只是抛出一个错误,在路线处理程序是不足以崩溃它。
process.exit会停止我的应用程序,但永远不会重新启动它。 (永远的日志刚刚说了一些像过程自我终止的东西。)
我的工作是插入到我的/crash
路线:
setTimeout(function () { throw new Error('We crashed!!!!!'); }, 10);