1

AX 2009 が負荷分散環境で動作しているときに、コードの伝播をどのように処理するのか興味があります。

最近、AX サーバー インフラストラクチャを 1 つの AOS インスタンスから 3 つの AOS インスタンスに変換しました。そのうちの 1 つは専用のロード バランサー (実質的に 2 つのユーザー向けサーバー) です。すべてが同じアプリケーション ファイルとデータベースを共有します。それ以来、システムに加えられたコードの更新を受け取るのに問題を抱えているユーザーが 1 人います。通常、変更が表示されるまでに数日かかり、変更が一度にすべて更新されるわけではないようです。

たとえば、値が ENUM フィールドに追加されましたが、それが使用されたフォームでそれを見ることができませんでした (ただし、同じインスタンスに接続されている他の人はそうでした)。現在、このユーザーはドロップダウンでフィールドを期待どおりに表示できますが、インスタンスの 1 つに接続すると、レポートにフローされません。他のインスタンスに接続すると正常に動作し、いずれかのインスタンスに接続している他のユーザーは正常に動作します。

これがインフラストラクチャの変更に関連しているかどうかは定かではありませんが、1 人のユーザーしか経験していないのは奇妙に思えます。私の理解では、このセットアップでは、コードの変更がすぐに (アプリケーション ファイルを共有するため)、または少なくとも妥当な時間 (<1 日) でサーバー全体に伝播するということでした。これは正しいですか、それとも誤解されていますか?

4

3 に答える 3

1

キャッシュの問題はユーザーごとにあるように思われるので、AUCファイルについて学びましょう。

ファイルはクライアントコンピューターに保存され、同期を維持するのが難しい場合があります。他にも問題があります。

スクリプトでAXを起動し、AXを起動する前にAUCファイルを削除します

AOSインスタンス間にキャッシュコヒーレンシはありません。一方のAOSサーバーにXPOをインポートし、もう一方のサーバーには表示されません。キャッシュを手動でフラッシュするか、他のAOSを再起動する必要があります。最も簡単なことは、各サーバーにインポートすることです。これは、ラベルを私の知識と同期させる唯一の方法であるため、ラベルに特に当てはまります。

于 2012-12-09T13:35:56.450 に答える
1

私もこれに興味がありますが、私が知っていることは、ユーザーが AOT へのアクセス権 (管理者のメンバーまたは開発者アクセス権を持つグループ) を持っている場合、クライアントはそうでない場合よりも積極的に AOT 要素をキャッシュするということです。開発者アクセスを持っています。

要素 (Enum など) はクライアント レベルでキャッシュされる場合がありますが、AOS レベルでもキャッシュされる場合があります。AOS (サービス) を再起動すると、そのサービスのメモリがフラッシュされ、再起動時に要素を再ロードする必要がありました。

私が提案しているのは、要素がクライアント側にキャッシュされていないことを確認することだと思います。クライアントを再起動するか、開発者ツール メニューから [Refresh AOD] を実行します。それでも問題が解決しない場合は、クライアントが接続している AOS を再起動してみて、問題が解決するかどうかを確認してください。

すべてのユーザーがいずれかの要素の最新の「コピー」を持っていることを絶対に確認したい場合は、これらすべてのサービスで共有されているアプリケーション ファイルで開発するのではなく、 1AOS。また、本番環境に移行する必要がある場合は、本番環境のすべての AOS を停止し、システムがダウンしている間にチャンスを移行する必要があります。

于 2012-12-05T08:04:15.867 に答える
0

このような場合、特定のケースの正確な原因を見つけることはしばしば困難です。このような状況を回避するために、いくつかのベスト プラクティスに従うようにしています。
- 開発には別の環境を使用する
- XPO ではなくレイヤー ファイルを使用してコード変更を展開する - 展開する
ときは、すべての AOS を停止し、ファイルを展開し、アプリケーション ディレクトリ内のインデックス ファイルを削除し、1 つの AOS を開始します。 、コンパイル、DB の同期、他の AOS の起動 (または、すべてをシャットダウンしてからやり直す)
- AOS とクライアントの最新のカーネル バージョンを使用するようにしてください。

于 2012-12-05T18:41:20.293 に答える