在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/數(shù)據(jù)庫  HTML/ mongoose的報錯:timed out 和 socket closed 有什

mongoose的報錯:timed out 和 socket closed 有什么區(qū)別?分別在什么情況下出現(xiàn)?

最近生產(chǎn)環(huán)境中發(fā)現(xiàn)一個讀取數(shù)據(jù)的接口返回時間過長。
項(xiàng)目使用的是 nodejs + mongodb
開發(fā)使用的依賴:

  "dependencies": {
    "express": "2.5.10",
    "iconv-lite": "^0.4.13",
    "ioredis": "^1.15.1",
    "log4js": "^0.6.35",
    "mongoose": "^4.4.13",
    "node-schedule": "~1.0.0",
    "node-xlsx": "^0.4.0",
    "superagent": "3.8.2"
  }

查看日志的時候,發(fā)現(xiàn)報錯信息是:
生產(chǎn)環(huán)境報錯信息

我們猜想是由于網(wǎng)絡(luò)原因,導(dǎo)致服務(wù)于數(shù)據(jù)庫鏈接問題,所以我們用類似的環(huán)境想復(fù)現(xiàn)此為問題。

復(fù)現(xiàn)的過程是用 wrk 工具連續(xù)訪問用一個接口一段時間,在此時間內(nèi)設(shè)置服務(wù)器防火墻,模擬斷網(wǎng)情況。
結(jié)果得到的報錯信息如下:
測試環(huán)境報錯信息

問題如題:

  1. mongoose的報錯:timed out 和 socket closed 有什么區(qū)別?
  2. 分別在什么情況下出現(xiàn)?
回答
編輯回答
陌璃

我的理解是timed out屬于被動關(guān)閉,服務(wù)器不響應(yīng)也不理你,socket closed屬于主動關(guān)閉,服務(wù)器直接就拒絕了。mongoose監(jiān)聽timedoutclose(had_error)只是為了區(qū)分錯誤類型,最終都執(zhí)行了socket.end()。

2018年4月8日 00:00