gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费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號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
日本欧美视频在线观看| www.xxx亚洲| 国产精品无码人妻一区二区在线| www.成年人视频| 浮妇高潮喷白浆视频| 成人在线免费播放视频| 国产精品区在线| 欧美一级爱爱视频| 奇米精品一区二区三区| 日韩一级理论片| 日本特黄在线观看| 国产 日韩 亚洲 欧美| 国产一区亚洲二区三区| 日本人69视频| 久久精品国产sm调教网站演员| 国产成人综合一区| 男插女免费视频| 超碰网在线观看| www国产无套内射com| 男人操女人免费软件| 亚洲AV无码成人精品一区| 成人精品视频在线播放| 色婷婷.com| a√天堂在线观看| 超碰免费在线公开| 欧美日韩在线中文| 中文字幕在线乱| 国产91色在线观看| 男的插女的下面视频| 日韩高清第一页| 成人一级片网站| 99在线免费视频观看| 欧美大片久久久| 国产精品无码av无码| 日韩a级黄色片| 永久免费黄色片| 亚洲这里只有精品| 欧美 激情 在线| 欧美一级视频免费看| 欧美日韩亚洲国产成人| 成人不卡免费视频| 亚洲人成无码www久久久| 男人添女人下部视频免费| 欧美日韩在线免费观看视频| 亚洲成人天堂网| 999精品网站| 女性隐私黄www网站视频| 你真棒插曲来救救我在线观看| 日本三级中文字幕在线观看| www.污污视频| 亚洲第一中文av| 日日噜噜夜夜狠狠| 超碰在线97免费| 日本中文字幕高清| 91黄色小网站| www.xxx亚洲| 一道本视频在线观看| 免费在线观看毛片网站| 日本黄色三级大片| 色欲av无码一区二区人妻| 欧美成人一区二区在线观看| 成人在线免费在线观看| 国产xxxxx在线观看| 成人黄色一区二区| 久久久久久久久久久久91| 在线看的黄色网址| 中文字幕国产免费| 中国黄色片一级| a级黄色片网站| www.69av| 成年网站在线免费观看| 中文字幕永久视频| 五月激情五月婷婷| 国内av免费观看| 成人区一区二区| 91黄色小网站| 午夜激情影院在线观看| 国产日韩视频在线播放| 国产一区二区四区| 波多野结衣家庭教师视频| 91精品无人成人www| 色撸撸在线观看| 成人精品视频在线播放| 国产精品天天av精麻传媒| 91精品国产三级| 精品国偷自产一区二区三区| 欧美污视频网站| а 天堂 在线| 国产又黄又大又粗视频| 中文字幕在线观看日 | 日韩视频一二三| 鲁一鲁一鲁一鲁一澡| 天天影视综合色| 久久久国内精品| 中文字幕 91| 国产中文字幕乱人伦在线观看| www.色偷偷.com| a级片一区二区| 欧美第一页浮力影院| 免费cad大片在线观看| 别急慢慢来1978如如2| 欧美日韩中文字幕在线播放| 国产a级片免费观看| 国产一级大片免费看| 成人亚洲精品777777大片| 免费毛片网站在线观看| 亚洲视频一二三四| 国产超级av在线| 国产精品三级一区二区| 91 在线视频观看| 精品久久久久久无码国产| 精品嫩模一区二区三区| 日韩欧美国产片| 日韩精品一区二区三区久久| 日韩黄色片在线| 国产奶头好大揉着好爽视频| 在线观看国产福利| 免费在线观看毛片网站| 久久国产精品视频在线观看| 性做爰过程免费播放| 在线观看国产中文字幕| 成人在线观看黄| 久久久999视频| 久久国产午夜精品理论片最新版本| 色偷偷中文字幕| 中文字幕永久有效| 亚洲人成无码www久久久| 六月婷婷在线视频| 欧美中日韩在线| 日b视频免费观看| 欧美亚洲色图视频| 三级在线免费观看| 一本—道久久a久久精品蜜桃| 亚洲成人福利在线| 超碰在线97免费| 岛国av在线免费| 永久免费的av网站| 天天看片天天操| 日本77777| 超碰在线免费观看97| 99亚洲精品视频| 日韩成人手机在线| www.avtt| 成人黄色片视频| 天天视频天天爽| 色91精品久久久久久久久| 视频免费1区二区三区| 午夜啪啪免费视频| 国产日韩欧美大片| 日本xxxxxxxxxx75| 日韩国产一级片| 十八禁视频网站在线观看| 天堂一区在线观看| 国产精品99久久久久久大便| 国产片侵犯亲女视频播放| 丝袜人妻一区二区三区| 欧美一级片中文字幕| 一起操在线视频| 喜爱夜蒲2在线| 免费观看精品视频| 污污视频网站在线| 久久久久久av无码免费网站下载| 91好吊色国产欧美日韩在线| 国产精品拍拍拍| 黄色录像特级片| 国产精品无码av无码| 日韩av福利在线观看| 男人用嘴添女人下身免费视频| 免费看国产黄色片| 一本色道久久88亚洲精品综合| www黄色av| 熟女熟妇伦久久影院毛片一区二区| 久久国产精品视频在线观看| 一个色综合久久| 国产v片免费观看| 九九热精品国产| 波多野结衣50连登视频| aaaaaaaa毛片| 精品久久久久久无码国产| 日本黄xxxxxxxxx100| 免费观看精品视频| 97在线免费视频观看| 污污动漫在线观看| 亚洲国产精品成人天堂| 8x8x成人免费视频| 北条麻妃在线观看| 福利网在线观看| xxx国产在线观看| av动漫免费看| 久久久久99精品成人片| 亚洲欧美日本一区二区| 亚洲 中文字幕 日韩 无码| 国产精品av免费观看| 一女二男3p波多野结衣| 男人透女人免费视频| 全黄性性激高免费视频| 日韩人妻一区二区三区蜜桃视频| 777一区二区| 欧美亚洲日本在线观看| 国产91在线免费|