Skip to main content

 

 

 

 
Language:

 

 
 
 
OutSystems

OutSystems 11.7.xでのパブリッシュが遅い

症状

OutSystemsバージョン11.7.xへのアップデート/アップグレード後、以下のいずれかが遅くなります。

  • Service Centerでのソリューションのパブリッシュ

  • Service Centerでのアプリケーションのパブリッシュ

  • 11.7.x以降を実行しているターゲット環境へのLifeTimeのステージング(UIまたはAPI経由)

アップグレード前のパブリッシュと比較すると、所要時間が20%以上長くなりました。特にパブリッシュ操作のデプロイフェーズで長く感じられました。

影響を受ける構成

この問題は、ターゲット環境で以下の要因が重なった場合に表面化します(すべての条件を満たす必要があります)。

  1. オンプレミス環境である

  2. Platform Server 11.7.xを実行している

  3. ファーム環境である(2つ以上のフロントエンド含む)

  4. デプロイメントゾーンアドレスがロードバランサのホスト名である

PaaSユーザーは影響を受けません。

影響を受けていることを確認する

  1. デプロイフェーズのボトルネックを確認する

詳細なパブリッシュログを(Service CenterまたはLifeTimeで)分析して、デプロイフェーズの各ステップの所要時間が以前よりも長くなっていることを確認します(必要に応じて、以前のデプロイログを調べます)。また、各モジュール(エクステンションではない)のデプロイには、これまでのように数秒ではなく、以下に示すように約1分30秒かかります。

Updating tenant views of module ‘AdminLead_cs’.
Updating tenant views of module ‘AutomatedEmails_cs’.
Deploying module ‘RichWidgets’.(Last Step took 315).
Deploying module ‘Users’.(Last Step took 1m 27s).
Deploying module ‘W_Theme_UI’.(Last Step took 1m 285).
Deploying module ‘Countries’.(Last Step took 1m 28s).
Deploying module ‘WorldTimezone’.(Last Step took 1m 28s).
Deploying module ‘DiffEntityDataToText’.(Last Step took Im 28s).
  1. 遅いRefreshISAPIFiltersアクションの呼び出しを特定する

これまでのパターンを確認した後、Service Centerの一般ログをSLOWEXTENSIONでフィルタリングし、デプロイされた各モジュールのデプロイ期間中に、以下のように所要時間が約90,000ミリ秒になっている複数のエントリを特定します。

  • OMLProcessor.RefreshISAPIFilters took 88765 ms [actual value may vary]

  • デプロイメントサービスへの接続エラーを特定する

上記のパターンを確認した後、Service Centerのエラーログで以下のようなエラーを見つけます。同じ期間内の遅いRefreshISAPIFiltersごとに、おおむね1つのエラーがあります。RefreshPathRulesが含まれるエントリに注意してください。これが重要な要素になります。これが表示されない場合は、関連するエラーではありません。

A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 10.0.21.8:12001
(...)
Exception rethrown at [0]:
   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(...)
   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(...)
   at OutSystems.HubEdition.IBroadcastListener.MessageTransmission(...)
   at OutSystems.HubEdition.DeploymentController.Compiler.RefreshPathRules(...)
   at cs#pbxmkwit.InnerExecute()
   at OutSystems.HubEdition.ServerCommon.Tasks.AbstractTask.Execute()

原因

この問題が発生するのは、フロントエンドサーバーアドレスではなくデプロイメントゾーンアドレスのIPアドレスを介して、デプロイメントコントローラサービスがデプロイメントサービスと通信しようとしているためです。

そのような通信ができず、ネットワーク接続が明示的に拒否されていない状況では、デプロイメントコントローラはタイムアウトするまで待機します。この待機は、デプロイされるモジュールごとに発生します。

復旧

最も一般的なファーム構成(デプロイメントコントローラがフロントエンドでもあるファーム)の場合、この問題の回避策はプラットフォームの再構成という形ですでに提供されています。純粋なデプロイメントコントローラを備えた環境では、デプロイメントコントローラをフロントエンドにもなるように昇格させてから、この回避策を適用できます。

回避策

この回避策を適用できるのは、コントローラサーバーがフロントエンドでもあり、デプロイメントサービスを実行している場合のみです。

このような状況を解決するには、デプロイメントコントローラがIP 127.0.0.1で独自のデプロイメントサービスと通信するようにプラットフォームを再構成します。

そのためには、以下の手順が必要になります。

  1. 環境のデータベースで以下のクエリを実行します。
insert into ossys_parameter (name, VAL) VALUES ('Compiler.UseFrontEndAddressRefreshPaths', 'False')
  1. コントローラサーバーでデプロイメントコントローラサービスを再起動します。

解決策

現時点で解決策はありません。バージョン11.8.0には、この問題の修正が含まれる予定です(予定日をご覧ください)。リリースノートにRPC-871が参照されているかどうかを確認してください 。

  • Was this article helpful?