久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長資訊網
最全最豐富的資訊網站

如何提升nodejs的穩定性

提升nodejs穩定性的方法:1、保持良好的代碼結構;2、使用“try~catch”來捕獲異常;3、使用domain模塊來處理程序的異常;4、使用log4js模塊記錄日志;5、使用forever模塊管理nodejs。

如何提升nodejs的穩定性

本教程操作環境:windows7系統、nodejs 12.19.0版,DELL G3電腦。

提高nodejs程序的穩定性,健壯性

在網上看到一些帖子,吐糟,質疑nodejs 程序的穩定性,為什么呢?其一,可能這個和javascript有關吧,node是拿javascript去實現的,而javascript又被稱為是“世界上誤解最深的語言”,我們可以去看看nodejs 創始人的說法,可以去看看知乎的這篇文章,為什么node 用javascript去實現,其二,nodejs 畢竟還年輕,而且官網在部分模塊也標注了此模塊的目前的狀態。

這2天我抽了點時間思考了下這個問題,我覺得我們程序首先功能應該是獨立的,就是一個功能出異常了,不應該去影響另外一個正常的功能,不應該將整個程序都崩潰掉,其次,即使是程序崩潰了,我們也應該有一個讓程序自動啟動,另外,應該去記錄日志,方便我們跟蹤問題。我覺得主要可以從以下方面提高nodejs 穩定性:

1)保持良好的代碼結構:

我們知道node是單線程,非阻塞io,默認就是異步,通過回調的方式處理后面的流程,如果嵌套的層次太多了,勢必會引起代碼邏輯結構的混亂,也不利于維護和升級,可以采用async這個異步流程控制模塊,來理清我們的代碼邏輯。

2)使用 process.on('uncaughtException', function(err){…}); 來處理未被捕捉的錯誤。

3)使用try~catch 來捕獲異常:

這個只能解決一部分問題,不是萬能的,在上面說到因為node是單線程,非阻塞io,默認就是異步,通過回調的方式處理后面的流程,try~catch 是不能捕獲的callback 里面的error的錯誤的,怎么捕獲到callback里面的錯誤呢 ? 可以采用domain模塊

4)使用domain模塊來處理程序的異常

先看看對domain的解釋:domain是 EventEmitter類的一個子類。監聽它的error事件來處理它捕捉到的錯誤。 它提供了一種方式,即以一個單一的組的形式來處理多個不同的IO操作。如果任何一個注冊到domain的事件觸發器或回調觸發了一個‘error’事件,或者拋出一個錯誤,那么domain對象將會被通知到。而不是直接讓這個錯誤的上下文從`process.on('uncaughtException')'處理程序中丟失掉,也不會致使程序因為這個錯誤伴隨著錯誤碼立即退出。

如何使用domain 模塊呢?看一個例子:

serverDomain.run(function() {   // 服務器在serverDomain的作用域內被創建   http.createServer(function(req, res) {     // req和res同樣在serverDomain的作用域內被創建     // 但是,我們想對于每一個請求使用一個不一樣的域。     // 所以我們首先創建一個域,然后將req和res添加到這個域上。     var reqd = domain.create();     reqd.add(req);     reqd.add(res);     reqd.on('error', function(er) {       console.error('Error', er, req.url);       try {         res.writeHead(500);         res.end('Error occurred, sorry.');       } catch (er) {         console.error('Error sending 500', er, req.url);       }     });   }).listen(1337);     }); ```

說明:首先創建一個域(domain.create()),然后將需要監控的分發器添加到該域上,最后給域綁定一個錯誤事件,這樣就可以監控了。

再看一個例子:

var d = domain.create(); d.on('error', function(er) {   console.error('Caught error!', er); }); d.run(function() {   process.nextTick(function() {     setTimeout(function() { // 模擬幾個不同的異步的東西       fs.open('non-existent file', 'r', function(er, fd) {         if (er) throw er;         // 繼續。。。       });     }, 100);   }); });

說明:首先創建一個域,給域綁定一個錯誤事件,然后在域的上下文提供可以運行的函數

如果對于回調呢?可以這么使用

var d = domain.create();  function readSomeFile(filename, cb) {   fs.readFile(filename, 'utf8', d.bind(function(er, data) {     // if this throws, it will also be passed to the domain     return cb(er, data ? JSON.parse(data) : null);   })); }  d.on('error', function(er) {   // an error occurred somewhere.   // if we throw it now, it will crash the program   // with the normal line number and stack message. });

當然也可以這么使用

var d = domain.create();  function readSomeFile(filename, cb) {   fs.readFile(filename, 'utf8', d.bind(function(er, data) {     // if this throws, it will also be passed to the domain     return cb(er, data ? JSON.parse(data) : null);   })); }  d.on('error', function(er) {   // an error occurred somewhere.   // if we throw it now, it will crash the program   // with the normal line number and stack message. });

這個函數與domain.bind(callback)幾乎一模一樣。但是,除了捕捉被拋出的錯誤外,它還會攔截作為第一參數被傳遞到這個函數的Error對象。

5)使用log4js 模塊記錄日志

  log4js 是一個非常強大的日志管理工具,在可以看看github這個項目: https://github.com/nomiddlename/log4js-node

6)使用forever 模塊來管理nodejs

  forever 是服務端管理nodejs 的一個模塊,一個命令行工具,能夠啟動,停止app 應用。forever完全是基于命令行操作,在forever進程管理之下,創建node的子進程,通過monitor監控node子進程的運行情況,一旦文件更新,或者進程掛掉,forever會自動重啟node服務器,確保應用正常運行。非常的好用.

可以關注下這個項目:https://github.com/nodejitsu/forever

但是forever 也不是萬能的,也由下面這些問題:

  • 有限的監控和日志功能
  • 進程管理配置的支持差
  • 不支持集群
  • 代碼庫老化(意味著在升級node.js時頻繁的失敗)

附本文測試代碼:https://github.com/yupeng528/node-error

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
亚洲日本国产| 天堂网在线观看国产精品| 一区三区视频| 国产日韩一区二区三区在线| 999在线观看精品免费不卡网站| 人人精品亚洲| 久久精品国产大片免费观看| 少妇久久久久| 日韩高清成人| 国产夫妻在线| 成人日韩在线| 亚洲成人精选| 在线亚洲国产精品网站| 精品在线91| 欧美日韩视频| 亚洲网址在线观看| 日本一区二区三区视频在线看| 亚洲久久在线| 欧美精品三级在线| 欧美a在线观看| 91欧美日韩| 999精品一区| 亚洲欧美视频一区二区三区| 亚洲免费专区| 久久激情五月婷婷| 久久亚州av| 国内亚洲精品| 亚洲香蕉久久| 欧美成人精品午夜一区二区| 中文字幕成在线观看| 黄色亚洲大片免费在线观看| 日韩影院在线观看| 国产精品分类| 久久久精品五月天| 美女网站久久| 欧美国产视频| 国产一区二区视频在线看| 婷婷成人在线| 日韩精品亚洲专区| 欧美国产小视频| 自拍日韩欧美| 欧美影院精品| 精精国产xxxx视频在线野外| 国产亚洲高清视频| 国产日韩欧美| 999久久久亚洲| 午夜日韩av| 国产欧美日本| 香蕉精品久久| 91大神在线观看线路一区| 国产成人调教视频在线观看| 国产一区二区三区自拍| 日韩精品91亚洲二区在线观看| 久久99国产精品视频| 欧美日韩国产一区精品一区| 先锋影音久久久| 久久wwww| 在线亚洲一区| 麻豆精品国产91久久久久久| 不卡在线一区| 国产精品久久亚洲不卡| 国产在线成人| 国产精品一区二区av日韩在线| 久久久久久久久丰满| 日韩毛片一区| 久久黄色影院| 国产一卡不卡| 亚洲一区二区三区四区五区午夜 | 91麻豆精品| 久久久久免费av| 91亚洲精品视频在线观看 | 亚洲伊人精品酒店| 吉吉日韩欧美| 日韩动漫一区| 欧美午夜不卡| 色婷婷亚洲mv天堂mv在影片| 美国欧美日韩国产在线播放| 高清一区二区三区| 日韩中文字幕区一区有砖一区| 91亚洲人成网污www| 日韩精品欧美精品| 99视频精品视频高清免费| 国产精品久久久久av蜜臀| 国产视频一区三区| 中文字幕人成乱码在线观看 | 国产亚洲一区二区三区啪| 婷婷综合亚洲| 成人一区而且| 国产午夜一区| 亚洲资源网站| 欧美成人亚洲| 精品一区二区三区视频在线播放 | 亚洲精品高潮| 欧美va天堂| 精品捆绑调教一区二区三区| 久久a爱视频| 日本免费一区二区视频| 鲁大师影院一区二区三区| 亚洲二区视频| 成人啊v在线| 成人在线视频免费看| 国产乱人伦精品一区| 狠狠爱www人成狠狠爱综合网| 天堂а√在线最新版中文在线| 国产欧美日韩精品高清二区综合区| 亚洲一区二区三区高清不卡| 亚洲欧美一区在线| av日韩中文| 精品美女视频| 欧美激情视频一区二区三区免费| 日本不卡高清| 深夜日韩欧美| 亚洲乱码一区| 三级一区在线视频先锋| 99国产精品久久久久久久成人热| 久久久久亚洲| 成人羞羞在线观看网站| 在线综合视频| 给我免费播放日韩视频| 麻豆精品在线播放| 国产精品欧美在线观看| 丝袜美腿亚洲色图| 日韩大片在线| 国产精品巨作av| 精品欠久久久中文字幕加勒比| 国产福利一区二区精品秒拍| 999久久久免费精品国产| 日韩精品免费一区二区在线观看 | 国产aⅴ精品一区二区四区| 国产精品一区二区三区美女 | 亚洲91在线| 免费在线日韩av| 亚洲不卡视频| 国产欧美自拍一区| 日韩视频1区| 日韩av午夜在线观看| 日韩精品视频在线看| 精品国产亚洲一区二区三区大结局| 欧美午夜三级| 99久久精品费精品国产| 福利精品一区| 狠狠久久伊人| 免费在线观看一区| 久久精品伊人| 色爱综合网欧美| 亚洲一级少妇| 欧美日韩一区二区综合| 国产综合激情| 亚洲先锋成人| 午夜在线视频观看日韩17c| 亚洲三级网址| 国产欧美日韩精品高清二区综合区 | 精品一区二区三区中文字幕视频 | 亚洲精品在线影院| 激情欧美丁香| 一区二区三区网站| 国产亚洲一区| 精品国产欧美| 日韩国产网站| 亚洲免费成人| 少妇精品久久久| 国产一区二区三区久久| 99免费精品| 日韩精品视频在线看| 国产第一亚洲| 亚洲欧美日韩在线观看a三区| 色婷婷成人网| 久久久国产精品入口麻豆| 亚洲天堂一区二区| 亚洲狼人精品一区二区三区| 国产精品.xx视频.xxtv| 群体交乱之放荡娇妻一区二区| 性欧美精品高清| 国产精品激情电影| 日韩欧美视频专区| 9色精品在线| 国产亚洲人成a在线v网站| 神马午夜久久| 日本少妇精品亚洲第一区| 吉吉日韩欧美| 六月婷婷一区| 精品国产乱码| 国产精品腿扒开做爽爽爽挤奶网站| 欧美视频久久| 激情婷婷欧美| 国产极品一区| 国产一区二区精品| 精品国产一区二| 乱人伦精品视频在线观看| 欧美片第1页综合| 日韩一区二区在线免费| 日韩在线卡一卡二| 亚洲国产福利| 免播放器亚洲一区| 成人午夜在线| 亚洲三级精品| 91精品婷婷色在线观看| 国产精品丝袜在线播放| 一区二区三区四区在线看| 国产精品丝袜在线播放|