5分以上のリクエスト/分でリクエストを実行すると予想されるサービスがあります。このサービスは、Apache AsyncHttpClientに依存しています。数分おきに、クライアントは何らかの条件に達してJava.lang.IllegalStateException:リクエストを実行できません。 I/Oリアクターのステータス:STOPPED。クライアントへのすべての要求は、同じ例外メッセージで失敗し始めます。サービスが再開された後、このサイクルが繰り返されます。
リクエストの実行が失敗しても、AsyncResponseのfailed()メソッドへのコールバックが発生しないため、この問題をデバッグするのは本当に困難です。
私が収集できたことから、4.3で同様の問題を解決する修正が HTTPCORE-37HttpCore NIOにありました。 2。次のバージョンを使用しています-
commons-httpclient-3.1.jar
httpasyncclient-4.1.1.jar
httpcore-4.4.4.jar
httpcore-nio-4.4.4.jar
まだこの問題を見ています。
私は自分のアプリケーションでこれと同じ例外を扱ってきましたが、最終的にこの投稿から役立つ提案を見つけました- http://httpcomponents.10934.n7.nabble.com/IO-reactor-status-STOPPED- td29059.html
I/Oリアクターの#getAuditLog()メソッドを使用して、どの例外が原因で終了したかを正確に調べることができます。
ConnectionManagerのIOReactorへの参照を保持している場合は、このメソッドを呼び出して実際の問題を洞察できます。
私は自分のコードで信じられないほど愚かなことをしていたことがわかりました。しかし、私は監査ログを読むまで、それを理解することができませんでした。
この前にOutOfMemoryErrorが表示された場合は、これを試してください
-XX:MaxDirectMemorySize=512M