sql >> データベース >  >> NoSQL >> MongoDB

モンゴはあまりにも多くの接続を開きます

    個々の操作ごとにMongoクラスのインスタンスを作成しています。各インスタンスは少なくとも1つの接続(デフォルトでは10)を作成して保持するため、これは機能しません。これらの接続は、Java GCがMongoインスタンスをクリーンアップするか、close()を呼び出した場合にのみ削除されます。

    >

    問題は、どちらの場合も、単一のスレッドを使用していても、閉じるよりも速く作成していることです。これにより、急いで最大数の接続が使い果たされます。正しい修正は、シングルトンパターンを使用して1つのMongoインスタンスを維持することです(Mongo.Holderはこのための機能を提供します、Mongo.Holder.connect(..)を試してください)。簡単な「修正」は、マシンのファイル記述子の制限を増やして、接続の最大数を大幅に増やすことですが、最終的には同じ制限に達する可能性があります。 (シェル内で)を使用して現在の最大値を確認できます:

    db.serverStatus().connections
    

    TL; DR:Mongoインスタンスをシングルトンとして扱い、それらを可能な限り長寿命にすることで、あなたは黄金になります。遅延して作成されたインスタンスを返す静的メソッドgetInstance()を使用してMongoFactoryを実装すると、うまく機能します。頑張ってください。



    1. アトミック操作で1つのドキュメントのブールフィールドを切り替える方法は?

    2. Redisは順不同で挿入しますか、それとも奇妙に並べ替えますか?

    3. mongodbdockerイメージ認証に失敗しました

    4. mongodbでの並べ替えのためにプロパティの順序はどのように維持されますか?