1

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

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

虽然我已经确认 session 变量包含错误的国家,但我也确认所有应用程序特定的代码都可以正常工作(因为它应该在 DEV 和 PROD 环境中正常工作)。我认为问题可能是由于环境配置不同造成的。我的 DEV/PROD 环境使用 CentOS 6.0,但我的 Amazon Cloud 环境使用 Red Hat Linux。由于 Amazon 不提供 CentOS 映像,因此 Red Hat 是我能找到的最接近的版本。

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

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

谢谢!

4

2 回答 2

0

RedHad、CentOS 和 Amazon Linux 具有大部分相同的软件包,除了一些可能不会干扰运行的附加软件包。

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

然后它只持续 tomcat、grails 和您的应用程序:

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

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

如果您今天安装了 MySQL,您可能希望将其替换为 MySQL RDS 实例,并将您的 EC2 实例仅用于 Web 应用程序。

于 2012-08-09T11:30:54.120 回答
0

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

于 2012-08-30T15:54:25.177 回答