私は、さまざまな SOAP Web サービスから情報をフェッチする比較的単純な Java サービスを使用しており、内部で apache cxf 2.5.2 を使用しています。このサービスは 20 個のワーカー スレッドを起動して、1 時間ごとに 1000 ~ 8000 件のリクエストを処理します。各リクエストは、リクエストの性質に応じて 2 ~ 5 回の Web サービス呼び出しを行う可能性があります。
設定
- Web サービス接続で接続プールを使用しています
- 大量のリクエストに効率的に対処するために、接続タイムアウトは 2 秒に設定されています。
- すべての接続は、http プロキシ経由で行われます。
- 20 ワーカー スレッド
- Grunty 16 CPU ボックス
問題は、ログに「接続タイムアウト」エラーが表示され始めており、それらの数が非常に多いことです。コマンドラインからのcurlには5秒以上かかるため、アプリケーションサービスもマシンのネットワークパフォーマンスに影響を与えているようです同じ Web サービスへの接続を確立します。ただし、サービス アプリケーションを停止すると、curl のパフォーマンスが 5 ミリ秒未満に劇的に向上します
他の人々は CXF を使用してこの状況にどのように対処しましたか? それは機能しましたか、それとも別のライブラリに切り替えましたか? ゼロから始めるとしたら、「小さなペイロードの高頻度」トランザクションをどのように設計しますか?