簡體   English   中英

MongoDB連接在Node.js測試中未關閉

[英]Mongodb connections not closing in nodejs tests

因此,我有一套黃瓜測試,在“ BeforeFeatures部分中,我在同一服務器上創建了2個數據庫的連接,將池設置為2,這樣我就能看到何時連接4個連接(2個數據庫和2個池)。

然后最后,我像這樣關閉數據庫:

var closeDatabase = function(callback) {
    db1.close(function(){
        db2.close(function(){
            console.log("DONE");
            callback();
        });
    });
};

現在調用它,我看到控制台輸出,並且進程關閉,因此應該關閉兩個數據庫連接。 但是,如果我查看mongodb日志:

2016-01-14T11:45:05.813+0000 [initandlisten] MongoDB starting : pid=888 port=27017 dbpath=C:\Tools\mongodb\data 64-bit host=SomePC
2016-01-14T11:45:05.818+0000 [initandlisten] targetMinOS: Windows 7/Windows Server 2008 R2
2016-01-14T11:45:05.821+0000 [initandlisten] db version v2.6.7
2016-01-14T11:45:05.822+0000 [initandlisten] git version: a7d57ad27c382de82e9cb93bf983a80fd9ac9899
2016-01-14T11:45:05.826+0000 [initandlisten] build info: windows sys.getwindowsversion(major=6, minor=1, build=7601, platform=2, service_pack='Service Pack 1') BOOST_LIB_VERSION=1_49
2016-01-14T11:45:05.829+0000 [initandlisten] allocator: system
2016-01-14T11:45:05.830+0000 [initandlisten] options: { storage: { dbPath: "C:\Tools\mongodb\data" } }
2016-01-14T11:45:05.846+0000 [initandlisten] journal dir=C:\Tools\mongodb\data\journal
2016-01-14T11:45:05.848+0000 [initandlisten] recover : no journal files present, no recovery needed
2016-01-14T11:45:05.871+0000 [initandlisten] waiting for connections on port 27017
2016-01-14T11:45:11.639+0000 [initandlisten] connection accepted from 127.0.0.1:51841 #1 (1 connection now open)
2016-01-14T11:45:11.646+0000 [conn1] end connection 127.0.0.1:51841 (0 connections now open)
2016-01-14T11:45:11.650+0000 [initandlisten] connection accepted from 127.0.0.1:51842 #2 (1 connection now open)
2016-01-14T11:45:11.653+0000 [initandlisten] connection accepted from 127.0.0.1:51843 #3 (2 connections now open)
2016-01-14T11:45:11.659+0000 [initandlisten] connection accepted from 127.0.0.1:51844 #4 (3 connections now open)
2016-01-14T11:45:11.662+0000 [conn4] end connection 127.0.0.1:51844 (2 connections now open)
2016-01-14T11:45:11.665+0000 [initandlisten] connection accepted from 127.0.0.1:51845 #5 (3 connections now open)
2016-01-14T11:45:11.669+0000 [initandlisten] connection accepted from 127.0.0.1:51846 #6 (4 connections now open)
2016-01-14T11:45:11.689+0000 [conn5] end connection 127.0.0.1:51845 (3 connections now open)
2016-01-14T11:45:11.689+0000 [conn6] end connection 127.0.0.1:51846 (3 connections now open)
2016-01-14T11:45:11.690+0000 [conn2] end connection 127.0.0.1:51842 (3 connections now open)
2016-01-14T11:45:11.690+0000 [conn3] end connection 127.0.0.1:51843 (3 connections now open)

因此,最后雖然2個連接已結束,但似乎使4個連接中的3個處於活動狀態。 這就是說,如果我們查看端口,即使它只有4個連接,它似乎也可以激活6個端口。

那么這很常見嗎? 我應該擔心還是做錯什么? 這是一個問題的全部原因是因為當我嘗試使用連接時出現錯誤:

MongoError: server localhost:27017 sockets closed

因此,當我嘗試使用這些連接時,為什么它似乎過度分配並被炸毀,對此我有些困惑。

因此錯誤是正確的,因為先關閉連接再使用連接,這是因為它們在Windows上發生控制台輸出的方式並不總是以正確的順序100%發生。 事實證明,黃瓜正在一個地區默默轟炸,並在這里起到了作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM