3

Glassfishサーバーでopenesbを使用しています。as400データベースで動作する接続プールがあります。

数日ごとに、次のエラーが発生します。接続の割り当て中にエラーが発生しました。原因:使用中の接続は、max-pool-sizeと期限切れのmax-wait-timeに等しくなります。これ以上接続を割り当てることはできません

cpを軽減する最良の方法は、サーバーを再起動することです。また、同じ属性を持つ別のcpに設定することもできました。

私の質問は次のとおりです。開いている接続をすべて解放するようにcpに積極的に「指示」する方法はありますか?

乾杯、エラン

4

4 に答える 4

5

そうする前に、接続が適切に解放されない理由を突き止めてください。これが忘れられている場所が 1 か所あるようです (finally 句にすべての close() がありますか?)。

Michael Nygards の「Release It!」を強くお勧めします。ソフトウェア制作の準備を整えるテクニックについて。

編集#1:あなたの説明を正しく理解している場合、バックエンドプログラムはQSYSOPRのMSGWに入り、応答が返されるまで接続がハングします。デフォルトの応答が「C」であるプロファイルを使用して、障害が例外として伝播されるようにするオプションはありますか?

それ以外の場合は、接続またはサーバー全体のタイムアウト期間を 24 時間に設定できますか? その後、少なくとも接続は最終的に閉じられます。ただし、このソリューションはスケーリングしませんが、開発が容易になる可能性があります。

MSGW を定期的に検索し、事後分析のためにコールバック スタックを取得した後に自動的に応答を送信する別の監視スレッドを用意することも可能です。

于 2009-05-03T13:10:59.180 に答える
1

私はこの問題を抱えていましたが、それはトランザクション管理であることが判明しました。@TransactionManagement(TransactionManagementType.BEAN) をクラスに追加すると、問題が解決しました。私の場合、取引コードは必要ありませんでしたが、マイレージは要件によって異なる場合があります。

于 2010-09-27T10:23:00.983 に答える
0

Andersen へのコメントで、AS400 メッセージがスローされていると述べました。これらのメッセージに対する自動応答を設定して、例外メッセージを開いたままにしておくことができます。AS400 の WRKRPYLE (Work Reply List Entry) コマンドを調べて、これらのエラーに自動的に応答し、ハングを回避してください。

于 2009-05-07T20:03:12.323 に答える