2013-02-09 60 views
0

我打了mongodb端點每分鐘約30,000個請求。似乎一切正常工作,直到20,000請求,並且所有請求都失敗後MongoDB + Nodejs數據獲取失敗多個請求

t [object Object]。 (/home/ubuntu/node_modules/mongodb/lib/mongodb/connection/server.js:530:7) at [object Object] .emit(events.js:88:20) at [object Object]。 (/home/ubuntu/node_modules/mongodb/lib/mongodb/connection/connection_pool.js:104:15) at [object Object] .emit(events.js:70:17) at Socket。 (/home/ubuntu/node_modules/mongodb/lib/mongodb/connection/connection.js:411:10) at Socket.emit(events.js:67:17) at Array.0(net.js:319: 25) 在EventEmitter._tickCallback(node.js中:192:41)

閉每次迭代的數據庫連接,僅供參考,我連接到多個數據塊每次。

再次重複相同的過程具有相同的結果。

回答

1

這通常是服務器上的一個ulimit問題,因爲您打開了太多的連接,儘管您需要查看mongod/mongos日誌以確保安全。如果是這種情況,您將看到關於無法分配資源和/或創建新線程的錯誤。對於如何解決這個問題到這裏看看:

http://docs.mongodb.org/manual/administration/ulimit/

另外,關閉連接,這取決於你使用的可能是一個非常糟糕的主意駕駛員和可能是你的問題的根本原因(特別是如果你有適當的限制)。現在大多數驅動程序,包括節點我都相信有一個連接池,可以適當地管理連接並允許重複使用。通過明確地關閉它們,您可能實際上正在導致舊的連接在短期內建立起來。