1

我很好奇 AX 2009 在负载平衡环境中运行时如何处理代码传播。

我们最近将我们的 AX 服务器基础架构从单个 AOS 实例转换为 3 个 AOS 实例,其中一个是专用负载均衡器(实际上是 2 个面向用户的服务器)。所有共享相同的应用程序文件和数据库。从那时起,我们就有一位用户无法接收对系统进行的代码更新。这些更改通常需要几天时间才能看到,而且这些更改似乎不会一次全部更新。

例如,一个值被添加到一个 ENUM 字段,并且他们无法在使用它的表单上看到它(尽管连接到同一实例的其他人是)。现在,该用户可以按预期在下拉列表中看到该字段,但是当连接到其中一个实例时,它不会按应有的方式流入报表。当连接到另一个实例时,它可以正常工作,并且对于连接到任一实例的任何其他用户,它都可以正常工作。

我不确定这是否与基础架构更改有关,但只有一个用户正在体验它似乎很奇怪。我的理解是,通过这种设置,代码更改将立即(由于共享应用程序文件)或至少在合理的时间内(<1 天)传播到服务器。这是正确的还是我被误导了?

4

3 回答 3

1

我对此也有点好奇,但我所知道的是,如果用户有权访问 AOT(管理员成员或具有开发人员访问权限的组),客户端将比没有访问权限时更积极地缓存 AOT 元素具有开发人员访问权限。

元素(如枚举)可能在客户端级别缓存,但也可能在 AOS 级别缓存。重新启动 AOS(服务)将清除该服务的内存,迫使它在重新启动时重新加载元素。

我想我的建议是您确保该元素未在客户端缓存。重新启动客户端,或从开发人员工具菜单中运行“刷新 AOD”。如果这没有帮助,请尝试重新启动客户端连接的 AOS,看看是否有帮助。

我认为可以肯定地说,如果您想绝对确定每个用户都拥有任何元素的最新“副本”,那么您不应该在所有这些服务共享的应用程序文件上进行开发,而应该在具有1个AOS。当您需要将事物转移到生产环境时,您需要关闭生产环境中的所有 AOS,并在系统停机时转移机会。

于 2012-12-05T08:04:15.867 回答
1

由于您的缓存问题似乎是每个用户的问题,因此请了解AUC 文件

这些文件存储在客户端计算机上,很难保持同步。还有其他问题

通过脚本启动 AX,在启动 AX 之前删除 AUC 文件

AOS 实例之间没有缓存一致性:在一台 AOS 服务器上导入 XPO,而在另一台服务器上不可见。您将不得不手动刷新缓存或重新启动其他 AOS。最简单的事情是在每台服务器上导入,对于标签尤其如此,因为这是使标签与我的知识同步的唯一方法。

于 2012-12-09T13:35:56.450 回答
0

在这种情况下,通常很难找到具体案例的确切原因。我尝试遵循一些最佳实践来避免这种情况:
- 使用单独的环境进行开发
- 使用层文件而不是 XPO 部署代码更改
- 部署时,停止所有 AOS,部署文件,删除应用程序目录中的索引文件,启动一个 AOS 、编译、同步数据库、启动其他 AOS(甚至关闭所有并重新启动)
- 尝试为 AOS 和客户端安装最新的内核版本

于 2012-12-05T18:41:20.293 回答