0

数週間前にアプリをデプロイして以来、いくつかの問題に直面しています!

しばらく使用すると、Spring Data が Mongo をダウンさせ、次のメッセージを出力することがわかりました。

"desc": "何かを呼び出せません: vdbmongo1/10.20.0.211:27017/V1; ネストされた例外は com.mongodb.MongoException$Network: 何かを呼び出せません: vdbmongo1/10.20.0.211:27017/V1"

最初に、開いているファイルが多すぎることに気付きました。制限が 4096 の debian 7 を使用しました。その数を増やして、すべての開いているファイルを 2 倍の 8192 にしました (私が正しければ、Linux の接続はファイルと同じソケットです。彼ら?)

その値を増やすとメモリの使用量が急増し、メモリも増やしましたが、利用可能なメモリがそれほど多くなく、vm がシャットダウンします。

最後に、解決策を見つけようとしている間、6 時間ごとに cron サービスを再起動するように設定しましたが、今のところ機能しているようです。

私のアプリは、Debian 7 で実行されている tomcat 7.0.28 にデプロイされています。

これは、mongo インスタンスを作成するための私の 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 がデプロイされているマシンです。

これは予想される動作ですか?

4

2 に答える 2

0

はい、これは正常な動作です。

MongoDB は、データファイルをメモリに直接 mmap() するため、できるだけ多くのメモリを使用し、接続ごとにメモリを使用します (デフォルトでは接続ごとに 1MB)。

于 2013-10-03T14:00:15.580 に答える
0

最後のmongoバージョン(2.4.8)へのアップデートで問題が解決したようです。現在、同時に 15 ~ 20 を超える接続を確認できません。

于 2013-11-10T10:46:55.760 に答える