亚马逊云科技上的 Grails 应用程序会话数据出错



我有一个Grails 2.0.0 Web应用程序,它可以在DEV和PROD环境中运行,没有任何问题。这两个环境都位于运行 Tomcat 7 的 CentOS 6.0 服务器上。

由于客户的要求,我的任务是使用 Amazon 的 Web 服务将应用程序部署到云中。我已经能够做到这一点,但是我看到任何读取/写入会话数据的表单字段(即下拉框)都有奇怪的行为。例如,当我从下拉框中选择一个值时,所选值应保存到会话中,并在 ajax 调用以过滤相应的国家/地区数据列表后调用。如果我选择"百慕大",下拉值实际上(错误地)从列表中(在 ajax 调用之后)更改为我没有选择的另一个国家/地区。

虽然我已经确认会话变量包含错误的国家/地区,但我也确认了所有特定于应用程序的代码都正常工作(因为它应该在 DEV 和 PROD 环境中工作)。我相信问题可能是由于具有不同的环境配置。我的 DEV/PROD 环境使用 CentOS 6.0,但我的 Amazon Cloud 环境使用 Red Hat Linux。 由于亚马逊不提供 CentOS 映像,Red Hat 是我能找到的最接近的口味。

我想知道配置的差异是否会影响功能。或者,也许这是亚马逊特有的东西。例如,所有传入/传出流量都通过亚马逊的内部威胁管理网关 (TMG)。也许这会影响会话数据?

没有人有过类似的经历?或者谁能指出我正确的方向?这个问题已经影响了我几个星期了......

谢谢!

RedHad,CentOS和Amazon Linux具有基本相同的软件包,除了一些额外的软件包可能不会干扰运行。

我认为亚马逊内部TMG也不是问题,因为它会阻止网络数据包,但不会更改数据包内容。

然后它只持续雄猫,圣杯和您的应用程序:

  1. 您是否尝试过将Grails版本升级到2.0.4或2.1.0?
  2. 您是否在日志中确认您的 AJAX 请求实际上正在处理中?
  3. 你们的Xms、Xmx和PermGen雄猫配置是什么?
  4. 您的 EC2 虚拟机的大小是多少?如果是 m1.micro,您应该更改为 m1.small?

此外,我建议您尝试其他名为Elastic Beanstalk的亚马逊产品,该产品使用EC2,Auto Scaling Group,Elastic Load Balance和Cloud Watch,提供了一个非常简化和集成的控制台来管理您的环境,可以非常快速地测试不同的配置。

如果您现在安装了 MySQL,则可能需要将其替换为 MySQL RDS 实例,并将 EC2 实例仅用于 Web 应用程序。

问题是 Microsoft TMG 设置为执行缓存,这导致了问题。

最新更新