現在、非常に大きな応答を返す SOAP Web サービスを呼び出しています。
Spring-WS (WebServiceTemplate を使用)、JAX-WS クライアントを使用して Web サービスを呼び出し、アプリケーションは Jboss EAP 6.0 で実行されます。
現在、SaajSoapMessageFactory も使用しています。読み取りパフォーマンスを向上させるには、SaajSoapMessageFactory ( http://docs.spring.io/spring-ws/site/reference/html/common.html )ではなく AxiomSoapMessageFactory を使用する必要があることをフォーラムから読みました。
次の変更を行いました。
交換済み
<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory">
<property name="soapVersion">
<util:constant static-field="org.springframework.ws.soap.SoapVersion.SOAP_11" />
</property>
</bean>
に
<bean id="messageFactory" class="org.springframework.ws.soap.axiom.AxiomSoapMessageFactory">
<property name="payloadCaching" value="false"/>
</bean>
この変更は期待どおりに機能しました。しかし、パフォーマンスの観点からは、驚くべき結果が得られています。
50 人のユーザーが同時に Web サービスにアクセスする (Web サービスを呼び出す画面を介して間接的に)テストの場合、全体の応答時間 (ボタンがクリックされた瞬間から Web サービスからの応答が画面に再び表示される瞬間まで) ) ~ 27 秒から 22 秒に短縮されました。これは、SaajSoapMessageFactory よりも 5 秒短縮されています。
ただし、100 ユーザーテストを実行したところ、応答時間が 2 秒長くなり、この場合は SaajSoapMessageFactory の方が優れているように見えます。
AxiomSoapMessageFactory がストリーミングを使用し、ツリーの構築を回避しているにもかかわらず、このパフォーマンスの違いの理由を誰かが説明できますか??