Mongoにlargish(コレクションごとに80kのコレクション、200kの文書)データベースを作成しています。私がデータベースに文書をプッシュし始めると、〜800kの挿入後に次のエラーが発生します。mongodbに文書を挿入するときに「開いているファイルが多すぎます」というエラーが発生しました
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を数千回挿入して再起動すると、挿入処理を一時停止することなく、どのようにして挿入処理を改善できますか? (簡潔にするために、私は文書を簡略化している。実際の文書は約20のデータポイントを有する
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)
をモンゴするのRedisからデータポイントを転送しているPythonスクリプトを共有
。
あなたのコードに関連している場合は、それを表示することもできます。 –
mongodbのどのバージョンですか?そして 'mmapv1'や' wiredTiger'を使っていますか? –
@RobertSeaman - v3.4 with WT ...質問のコードの一部も追加されました。 – pradyotghate