64位Amazon实例上的32位ASP.NET应用程序

时间:2011-06-03 18:57:52

标签: asp.net-mvc-2 amazon-ec2 32bit-64bit

我有一个用asp.net mvc2编写的web应用程序。目前在亚马逊ec2 32位媒体实例上运行。由于流量巨大,我们希望设置多个实例。但在此之前我们想在64位实例上运行应用程序。

任何推荐,概念证明,障碍等?

2 个答案:

答案 0 :(得分:1)

有几件事要检查,但大多数情况下应该有效:

  1. 确保所有程序集都编译为“任何CPU”。
  2. 检查可能不兼容64位的任何第三方程序集。
  3. 如果您的应用程序中有任何COM Interop / PInvoke,它需要是64位友好的(如内存对齐等),在地址的情况下使用IntPtr而不是Int32
  4. 如果不能解决问题,您可以继续使用64位操作系统,只需将AppPool更改为使用WOW即可。
  5. 试试吧。启动新的EC2实例很容易。
  6. 我提到另外一件事,人们在切换到64位时提到的是他们认为有些错误,因为应用程序使用的内存比32位时更多。这通常是由“指针膨胀”引起的。地址现在是64位宽,与32位相反。

    在其他一些更极端的情况下,由于x64和x86 .NET Framework具有不同的JIT,因此x64的优化方式不同,可能会损害性能而不是改进。当未修补时,这是.NET Framework 2.0的一个更大的问题。

答案 1 :(得分:1)

由于这将是64位窗口,您还将拥有64位IIS实例。如果您有任何使用不常用组件的第三方库(如Mono),您可能需要从源代码重新编译它们或进行一些更改。例如,当我们开始在64位IIS中托管时,我们遇到了这个问题:

System.BadImageFormatException on running ServiceStack examples.

如果你的应用程序都是.NET并且你没有使用使用本机代码的库,这对你来说可能不会有太多问题。

您还可以将IIS工作进程作为32位应用程序运行,因此即使遇到问题,它也应该非常即插即用:http://forums.asp.net/p/1156811/1901796.aspx

我最近将一堆32位IIS主机切换到64位,并没有太多问题。