[英]Getting 'too many open files' error when inserting documents in mongodb
我在Mongo中創建了一個大型數據庫(每個集合80k個文檔,每個集合200k個文檔)。 當我開始將文檔推入數據庫時,在插入〜800k之后,我不斷收到以下錯誤。
pymongo.errors.WriteError: 24: Too many open files
我有一個體面的服務器(2個vCPU,32 GB RAM)。 文件打開的ulimit
設置為無限制。 在/etc/init/mongodb.conf中設置了limit nofile 999999 999999
。
我曾嘗試在文件插入腳本中插入sleep
(希望mongodb稍候會關閉文件),但這也沒有幫助。 唯一可行的方法是插入失敗后重新啟動Mongodb。 然后,該過程可以繼續。
如何使插入過程更好,而不必每隔幾千次插入並重新啟動mongodb之后就暫停它?
共享將數據點從Redis傳輸到mongo的Python腳本
while (redis_conn.llen(redis_key) > 0) :
redis_json = redis_conn.lpop(redis_key)
json_doc = json.loads(redis_point)
collection_name = json_doc['collection_name']
collection = mongodb[collection_name]
document = { '1' : json_doc['1'], '2' : json_doc['2'] }
mongo_write_response = collection.insert_one(document)
(為簡潔起見,我簡化了文檔。實際文檔中包含大約20個數據點。
問題似乎出在MongoDB的安裝上。 我使用的是Debian 9,並使用apt-get
安裝了操作系統隨附的MongoDB版本。
由於MongoDB文檔表示尚不支持Debian 9,因此將操作系統降級為Debian 8並根據文檔安裝了MongoDB社區版。 現在運作良好:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.