0

` org.springframework.data.mongodb.UncategorizedMongoDbException: データベース接続を取得するためのセマフォが不足しています。ネストされた例外は com.mongodb.DBPortPool$ SemaphoresOut: Out of semaphores to get db connection at org.springframework.data.mongodb.core.MongoExceptionTranslator.translateExceptionIfPossible(MongoExceptionTranslator.java:70) at org.springframework.data.mongodb.core. org.springframework.data.mongodb.core.MongoTemplate.execute(MongoTemplate.java:370) での MongoTemplate.potentiallyConvertRuntimeException(MongoTemplate.java:1538) org.springframework.data.mongodb.core.MongoTemplate.insertDBObject(MongoTemplate.java: 730) org.springframework.data.mongodb.core.MongoTemplate.doInsert(MongoTemplate.java:633) で org.springframework.data.mongodb.core.MongoTemplate.insert(MongoTemplate.

これの修正は何ですか?`

4

2 に答える 2

2

接続を適切に閉じていません。挿入呼び出しの周りの try/finally で閉じるか、接続が挿入されている場合は、たとえばリクエストにスコープが設定されていることを確認し、そのスコープが終了したら閉じます。

于 2012-11-08T19:28:40.267 に答える
1

この質問を見たことがありますか?ここで説明されているように、接続を増やすための構成オプションがあります。

また、この質問を読んで、適切に構成する方法を学ぶことをお勧めします。

リンクされた最後の質問から:

threadsAllowedToBlockForConnectionMultiplier。プールが現在使い果たされている場合に、接続が使用可能になるまで待機できるスレッドの数。これは、「com.mongodb.DBPortPool$SemaphoresOut: Out of semaphores to get db connection」例外の原因となる設定です。このスレッド キューが threadsAllowedToBlockForConnectionMultiplier 値を超えると、この例外がスローされます。

スループットに大きなピークが予想され、大きなキューが一時的に発生する可能性がある場合は、この値を増やしてください。まさにその理由で、現時点で 1500 になっています。クエリの負荷が一貫してサーバーを上回っている場合は、それに応じてハードウェア/スケーリングの状況を改善する必要があります。

于 2012-11-17T21:48:16.663 に答える