2013-09-05 112 views
0

幾周前我部署了我的應用後,我正面臨一些問題!SpringData不關閉連接?

我發現,春天的數據使用一段時間後得到蒙戈下來並打印此消息:

「說明」:「不能叫了一句:vdbmongo1/10.20.0.211:27017/V1;嵌套的例外是com.mongodb.MongoException $ Network:不能調用某些東西:vdbmongo1/10.20.0.211:27017/V1「

首先我們看到打開的文件太多了,我們使用了debian 7,它的極限是4096。增加了這個數字,並翻倍到8192所有打開的文件(如果我是對的,linux中的連接是套接字,與文件相同,不是嗎?)

增加該值lue開始使用內存,然後我們增加了內存,但是我們沒有太多內存可用,並且vm關閉。

最後,我們設置了一個cron服務,以每6小時重新啓動一次,同時我們嘗試獲得一個解決方案並且現在看起來可行。

我的應用程序部署在Debian的7

運行的Tomcat 7.0.28這是一件我的XML創建蒙戈實例:

<!-- MongoDB host --> 
<mongo:mongo host="${mongo.host.name}" port="${mongo.host.port}" write-concern="SAFE"> 
    <mongo:options 
     connections-per-host="40" 
     threads-allowed-to-block-for-connection-multiplier="1500" 
     connect-timeout="15000" 
     auto-connect-retry="true" 
     socket-timeout="60000" 
     write-number="1" 
     write-timeout="0" 
     write-fsync="true"/> 
</mongo:mongo> 

我們今天上午重新啓動服務器和這裏是線程如何演變:

Time    Threads (files)   Connections   RAM 
09:00:00   90      4      177 
10:00:00   7371     78     411 
10:35:00   12519     106     480 
11:00:00   14375     113     485 
11:40:00   16616     122     490 
12:00:00   22776     144     584 
12:30:00   26544     156     594 
13:00:00   30251     167     600 
13:40:00   39179     191     827 
14:00:00   44075     203     855 
15:13:00   60491     239     891 
15:41:00   61976     242     904 
16:00:00   64491     264     931 
16:10:00   68619     255     939 
16:20:00   70200     258     971 
16:30:00   73416     264     1123 
16:45:00   73959     265     1130 

,當我看到vdbmongo1任何的73959個工藝的流程是這樣的:

mongod 30859 32763 mongodb 327u IPv4   1646841  0t0  TCP vdbmongo1:27017->vtomcat1:60329 (ESTABLISHED) 
mongod 30859 32763 mongodb 328u IPv4   1647673  0t0  TCP vdbmongo1:27017->vtomcat1:60330 (ESTABLISHED) 
mongod 30859 32763 mongodb 329u IPv4   1646867  0t0  TCP vdbmongo1:27017->vtomcat1:60650 (ESTABLISHED) 
mongod 30859 32763 mongodb 330u IPv4   1646913  0t0  TCP vdbmongo1:27017->vtomcat1:60762 (ESTABLISHED) 
mongod 30859 32763 mongodb 331u IPv4   1648224  0t0  TCP vdbmongo1:27017->vtomcat1:60962 (ESTABLISHED) 
mongod 30859 32763 mongodb 332u IPv4   1647197  0t0  TCP vdbmongo1:27017->vtomcat1:32923 (ESTABLISHED) 

其中vdbmongo1是包含數據庫的機器,而vtomcat1是部署tomcat的機器。

這是預期的行爲?

回答

0

是的,這是正常/預期的行爲。

的MongoDB將使用盡可能多的內存可能因爲它會直接mmap()的數據文件到內存,以及使用的內存爲每個連接(每個連接默認爲1MB)

0

看來,更新到最後蒙戈版本(2.4.8)解決了這個問題。現在我無法同時看到超過15 - 20個連接。