2013-09-05 3 views
0

У меня возникли некоторые проблемы, так как я развернул свое приложение пару недель назад!SpringData не закрывает соединения?

Я обнаружил, что Spring Data получает Монго вниз после некоторого времени использования и распечатан это сообщение:

«DESC»: «не может назвать что-то: vdbmongo1/10.20.0.211: 27017/V1, вложенное исключение com.mongb.MongoException $ Сеть: не может позвонить: vdbmongo1/10.20.0.211: 27017/V1 "

Сначала мы увидели, что было слишком много открытых файлов, мы использовали debian 7, который имеет предел 4096. Мы увеличил это число и удвоил до 8192 все открытые файлы (если я прав, подключения в Linux - это сокеты, то же самое, что файлы, не так ли?)

Увеличение этого va lue запускает использование памяти, тогда мы также увеличиваем память, но у нас не так много доступной памяти, а vm отключается.

Наконец, мы установили службу cron для перезапуска каждые 6 часов, пока мы пытаемся получить решение, и, похоже, оно работает сейчас.

Мое приложение развертывается в котом 7.0.28 работает на Debian 7.

Это часть моего 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() файлы данных непосредственно в памяти, а также использование памяти для каждого соединения (по умолчанию 1 Мб на каждое соединение)

0

Похоже, что обновление до последней версии Монго (2.4.8) решил проблему. Теперь я не вижу более 15-20 подключений одновременно.

Смежные вопросы