2014-02-10 31 views
3

有誰可以說是否對mongodb中的數據庫數量有實際限制?當我通過120個數據庫時,我開始有嚴重的問題。喜歡簡單的事情:mongodb中數據庫數量的實際限制

> show dbs 
Mon Feb 10 16:35:32 DBClientCursor::init call() failed 
Mon Feb 10 16:35:32 query failed : admin.$cmd { listDatabases: 1.0 } to: 127.0.0.1:27017 
Mon Feb 10 16:35:32 Error: error doing query: failed src/mongo/shell/collection.js:155 
Mon Feb 10 16:35:32 trying reconnect to 127.0.0.1:27017 
Mon Feb 10 16:35:32 reconnect 127.0.0.1:27017 failed couldn't connect to server 127.0.0.1:27017 
> 
Mon Feb 10 16:36:01 trying reconnect to 127.0.0.1:27017 
Mon Feb 10 16:36:01 reconnect 127.0.0.1:27017 failed couldn't connect to server 127.0.0.1:27017 
> 
Mon Feb 10 16:37:01 trying reconnect to 127.0.0.1:27017 
Mon Feb 10 16:37:01 reconnect 127.0.0.1:27017 ok 

> getMemInfo() 
{ "virtual" : 32, "resident" : 7 } 
Mon Feb 10 16:39:00 DBClientCursor::init call() failed 
Mon Feb 10 16:39:00 query failed : admin.$cmd { replSetGetStatus: 1.0, forShell: 1.0 } to: 127.0.0.1:27017 
> shell 
Mon Feb 10 16:39:38 ReferenceError: shell is not defined (shell):1 
Mon Feb 10 16:39:38 trying reconnect to 127.0.0.1:27017 
Mon Feb 10 16:39:38 reconnect 127.0.0.1:27017 ok 

然而,日誌文件留神祕

回答

2

你是什麼主機上運行什麼版本的MongoDB? 這裏是CenOS 6.5測試,MongoDB的2.2 x86_64的從EPEL

直接

下面是創建1000個數據庫

樣本python腳本
from pymongo import MongoClient 

mc = MongoClient() 
for i in range(5000): 
    print i 
    mc['db%s'%(i)].test.insert({"test":True}) 

輸出:

...snip... 
506 
Traceback (most recent call last): 
    File "overload_mongo.py", line 6, in <module> 
    mc['db%s'%(i)].test.insert({"test":True}) 
    File "/usr/lib64/python2.6/site-packages/pymongo/collection.py", line 357, in insert 
    continue_on_error, self.__uuid_subtype), safe) 
    File "/usr/lib64/python2.6/site-packages/pymongo/mongo_client.py", line 929, in _send_message 
    raise AutoReconnect(str(e)) 
pymongo.errors.AutoReconnect: [Errno 104] Connection reset by peer 

就在那兒,看着在日誌中

ERROR: Uncaught std::exception: boost::filesystem::basic_directory_iterator constructor: Too many open files: "/index/bauman/db/_tmp/esort.1392056635.506/", terminating 

好的ole太多打開文件的問題

如果你是一個企業級Linux平臺,您可以將此文件拖放到/etc/security/limits.d/mongodb.conf,並開始一個新的會話

mongodb  hard nofile   99999 
mongodb  soft nofile   99999 
mongodb  hard nproc   99999 
mongodb  soft nproc   99999 

我不知道如何實現在Windows上類似的結果。

'問題'在於MongoDB想要映射每個數據庫文件的內存映射,所以你需要你的hostOS來允許它這樣做。

相同的代碼如上

python overload_mongo.py 

輸出

...snip... 
995 
996 
997 
998 
999 

所有更好

相關問題