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一区二区
日韩精品一区二区三区不卡 | 男女h黄动漫啪啪无遮挡软件| 日韩一区二区高清视频| 日本一本二本在线观看| 特级西西人体www高清大胆| 亚洲五月天综合| 欧美视频在线观看网站| 六月婷婷激情网| theporn国产精品| 91淫黄看大片| 日本男人操女人| www.99热这里只有精品| 福利在线一区二区| 激情五月六月婷婷| 大地资源网在线观看免费官网| 黄色手机在线视频| 一级在线免费视频| 一区二区三区韩国| 免费看涩涩视频| 伊人国产精品视频| 午夜啪啪小视频| 日韩在线第三页| 日本在线观看a| 国产特级黄色大片| 欧美在线观看成人| 国产美女永久无遮挡| 中文字幕av久久| 妞干网这里只有精品| 青青草视频在线视频| 欧美另类videos| 国产精品久久久久9999爆乳| 国产在线播放观看| 妺妺窝人体色www在线小说| 久久黄色片视频| 天天爱天天操天天干| 想看黄色一级片| 国产精品igao激情视频| 青青草国产免费| 欧美女人性生活视频| 尤物国产在线观看| 男人的天堂成人| 日韩av三级在线| 午夜久久福利视频| 国产黄色激情视频| 欧美在线观看成人| 欧美美女一级片| 成人av在线不卡| 不卡av免费在线| 熟女视频一区二区三区| 欧美日韩在线一| 不用播放器的免费av| av免费看网址| www.夜夜爽| 成人黄色av片| 亚洲综合av在线播放| 韩日视频在线观看| 九九九九九伊人| 欧美一级在线看| 国产日产欧美一区二区| 国产精品天天av精麻传媒| 99精品视频网站| 国产精品无码一本二本三本色| 国产永久免费网站| 每日在线更新av| 日本三级中文字幕在线观看| av天堂永久资源网| 午夜久久久久久久久久久| 国产二区视频在线播放| av动漫在线播放| 中文字幕第22页| 久久午夜夜伦鲁鲁一区二区| 免费人成自慰网站| 少妇高潮流白浆| 日本不卡一区在线| 漂亮人妻被中出中文字幕| www.一区二区.com| 成年人黄色在线观看| 亚洲天堂网一区| 亚洲综合在线网站| 欧美视频在线观看网站| 成年在线观看视频| 中文字幕55页| 色男人天堂av| 伊人精品视频在线观看| 日日躁夜夜躁aaaabbbb| 久草综合在线观看| 国产亚洲天堂网| 亚洲国产精品久久久久爰色欲| 国产一二三区在线播放| 91传媒免费视频| 欧美乱做爰xxxⅹ久久久| 红桃一区二区三区| 天天想你在线观看完整版电影免费| 午夜一区二区视频| 三区视频在线观看| 久久久久久综合网| 黄频视频在线观看| 黄色高清视频网站| 麻豆md0077饥渴少妇| 水蜜桃在线免费观看| 欧美一二三不卡| 国产av麻豆mag剧集| 亚洲熟妇国产熟妇肥婆| 97国产在线播放| 欧美激情精品久久久久久小说| 亚洲国产精品久久久久婷蜜芽| 成年人在线看片| 中文字幕久久av| 在线观看av的网址| 日本韩国欧美在线观看| 日韩久久一级片| www.久久久精品| 伊人再见免费在线观看高清版 | 尤蜜粉嫩av国产一区二区三区| 亚洲精品一二三四五区| 成年人三级黄色片| 久久久久福利视频| 国产亚洲综合视频| 免费一区二区三区在线观看| 免费成人进口网站| 男女激情无遮挡| 伊人影院综合在线| 99在线观看视频免费| 日韩中文字幕组| 蜜臀av.com| 中文字幕在线观看第三页| 亚洲一二区在线观看| 日韩a级黄色片| 手机看片一级片| www..com日韩| 异国色恋浪漫潭| 看欧美ab黄色大片视频免费| 亚洲乱码日产精品bd在线观看| 黄色av免费在线播放| 天堂8在线天堂资源bt| 国产91色在线观看| a级黄色一级片| 免费观看中文字幕| 在线黄色免费观看| 亚洲中文字幕无码专区| 日韩欧美理论片| 免费av网址在线| 青青草精品视频在线| japanese在线视频| 污网站免费在线| 最近免费中文字幕中文高清百度| 天堂а√在线中文在线| 久久久福利影院| 一级黄色特级片| www.日日操| 国产性xxxx18免费观看视频| 欧美人与动牲交xxxxbbbb| 五月天婷婷在线观看视频| 精品少妇无遮挡毛片| 日本成人在线免费视频| 红桃av在线播放| 欧美日韩成人免费视频| 欧美一级片免费播放| 久久av综合网| 国产精品久久国产| www.亚洲成人网| 国产乱子伦精品视频| 自拍偷拍视频在线| 老司机av福利| wwwjizzjizzcom| 精品国产一区二区三区无码| 日韩欧美猛交xxxxx无码| www.欧美黄色| 日韩欧美视频网站| 欧美视频第一区| 国产免费人做人爱午夜视频| 国产一线二线三线在线观看| 噼里啪啦国语在线观看免费版高清版| www.亚洲天堂网| 超碰在线97免费| 91插插插影院| av动漫在线免费观看| 国产精品videossex国产高清| 精品无码国产一区二区三区av| 欧美在线一区视频| 无码人妻h动漫| 粉色视频免费看| 喜爱夜蒲2在线| 91猫先生在线| 鲁一鲁一鲁一鲁一av| 制服丝袜中文字幕第一页| 欧洲精品视频在线| 免费无码不卡视频在线观看| 欧美丰满熟妇xxxxx| 992tv人人草| 日本三级免费网站| 加勒比av中文字幕| 免费看毛片的网址| 一级特黄性色生活片| 国产精品一区在线免费观看| 国产亚洲综合视频| www.偷拍.com| 最近免费中文字幕中文高清百度| 国产福利在线免费| 欧美在线观看视频免费|