問題の説明
Pandora Boot を使用して開発された High-speed Service Framework(HSF)アプリケーションに多数のサービスが登録またはサブスクライブされている場合、アプリケーションの起動が遅くなります。
原因
Pandora Boot を使用して開発された HSF アプリケーションは、サービスレジストリ(ConfigServer)から各公開サービス(プロバイダー)または利用サービス(コンシューマー)へのアドレス同期に使用されるデフォルトの期間を設定します。デフォルトの期間は 3,000 ミリ秒です。多数のサービスが公開または利用されている場合、各サービスはアドレス同期を順番に待機する必要があります。これにより、アプリケーションの起動が遅くなります。
解決策
- アプリケーションの application.properties ファイルを開き、spring.hsf.max-wait-address-time パラメーターを指定します。単位:ミリ秒。
- アドレス同期のグローバルなデフォルト期間を指定するパラメーターを設定します。サンプルコード:
spring.hsf.max-wait-address-time = 500
- 単一のサービスインターフェースのアドレス同期期間を指定するパラメーターを設定します。サンプルコード:
spring.hsf.max-wait-address-times.<単一のサービスインターフェースの完全名>=<アドレス同期期間>
- アドレス同期のグローバルなデフォルト期間を指定するパラメーターを設定します。サンプルコード:
- (オプション) addressWaitTime パラメーターを使用して、コンシューマーインターフェースの期間を個別に指定します。単位:ミリ秒。 サービスのサブスクライブ中に、このパラメーターで指定された期間内にスレッドがブロックされ、アドレス同期を待機します。これにより、サービスの呼び出し時に空のアドレスエラーが発生しなくなります。このパラメーターは、コンシューマーアプリケーションの起動時にサービスをサブスクライブする必要があるインターフェースに必要です。このパラメーターは 3000 ~ 5000 ミリ秒の範囲の値に設定することをお勧めします。そうしないと、コンシューマーアプリケーションの起動時に エラーコード:HSF-0001 エラーが発生する可能性があります。ただし、このパラメーターを指定すると、アプリケーションの起動に必要な時間が長くなります。

- アプリケーションを再起動します。 spring.hsf.max-wait-address-time パラメーターを指定してアプリケーションを再起動した後も、アプリケーションの起動が遅いままの場合は、アプリケーションのスレッドスタックと、$USER_HOME/log/configclient/config-client.log ディレクトリおよび $USER_HOME/log/hsf ディレクトリにあるログファイルを分析できます。スレッドスタックを分析するには、
jstack <アプリケーション JVM プロセス ID> >> threaddump.txtコマンドを実行します。