簡體   English   中英

在node.js中進行調試

[英]Debugging in node.js

我建立了一個服務器,該服務器會收到許多請求並響應它們。

在某些情況下,會出現導致服務器崩潰的錯誤:

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: ENOENT, open '/mnt/ace/0/file'

我有兩個問題:

  1. 堆棧跟蹤不會向我提供有關導致此異常的應用程序行的任何信息(我無法手動調試,因為它僅在收到1000個或更多請求時發生)。
  2. 我不希望我的服務器崩潰。 我更希望它會引發例外,但會繼續起作用。

最佳的實現方式是什么?

您可以聽那種東西,而不會使其崩潰使應用程序崩潰,但這並不總是一個好主意。

process.on('uncaughtException', function(err) {
  console.log('Something bad happened');
  console.log(err.stack);
});

您是否嘗試檢查ulimit設置? 您可能無法在1000+的負載下打開文件句柄。

考慮這一點的另一種方法是使用 (如果您使用的是> = 0.8)。 域使您可以更好地控制根據上下文導致錯誤的方式來處理錯誤。

var domain = require('domain').create();

domain.on('error', function(err) {
  console.log(err);
});

domain.run(function() {
  // Your code that might throw
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM