アプリケーションに負荷がかかると、CPUが非常に高くなります(100%で15コア)。プロファイルは、主にServiceActivatingHandlerによって使用されるSpELによって20%+が使用されていることを示しています。アプリケーションはメッセージを処理するためにサービスアクティベータを使用しますが、SpELを使用することはありません。メッセージハンドラでSpELが原因でCPUが高い
次のように定義されている流れの中、約12 ServiceActivatorsあります:
<service-activator ref="myService"/>
または <service-activator ref="myService" method="addStuff"/>
次のように多くの署名がある:スクリーンショットをプロファイリング
@ServiceActivator public Message<String> handle(Message<String>, @Header("header1") String header1, @Header("header2") String header2, @Header("header3") String header3)
この式の評価を避けるにはどうすればよいですか?アプリケーションはSprintBootとSpringIntegration 4.3.xで動作します
その呼び出しの「Own time」は '<0.1'です。実際にどこの時間が費やされているかを見るには、そのhandleRequestMessageにドリルダウンする必要があります。 –
真実ですが、別のスクリーンショットがありません。 OpNEとTernaryで時間が費やされますgetInternalValue() –
あなたの設定と 'addStuff'の署名を表示できますか?再現できるかどうかを確認します。近日リリースの5.0では、ほとんどのPOJOメソッド呼び出しでSpELを使用していません。 –