Asp.net mvc 2 64位Amazon实例上的32位ASP.NET应用程序

Asp.net mvc 2 64位Amazon实例上的32位ASP.NET应用程序,asp.net-mvc-2,amazon-ec2,32bit-64bit,Asp.net Mvc 2,Amazon Ec2,32bit 64bit,我有一个用asp.net mvc2编写的web应用程序。当前在amazon ec2 32位介质实例上运行。由于流量巨大,我们需要设置多个实例。但在此之前,我们希望在64位实例上运行应用程序 有什么建议、概念证明、路障等吗?有一些东西需要检查,但大多数情况下都应该有效: 确保所有程序集都编译为“任意CPU” 检查可能与64位不兼容的任何第三方程序集 如果应用程序中存在任何COM互操作/PInvoke,则需要64位友好型(如内存对齐等),对于地址,使用IntPtr而不是Int32 如果不成功,您可以

我有一个用asp.net mvc2编写的web应用程序。当前在amazon ec2 32位介质实例上运行。由于流量巨大,我们需要设置多个实例。但在此之前,我们希望在64位实例上运行应用程序


有什么建议、概念证明、路障等吗?

有一些东西需要检查,但大多数情况下都应该有效:

  • 确保所有程序集都编译为“任意CPU”
  • 检查可能与64位不兼容的任何第三方程序集
  • 如果应用程序中存在任何COM互操作/PInvoke,则需要64位友好型(如内存对齐等),对于地址,使用
    IntPtr
    而不是
    Int32
  • 如果不成功,您可以继续使用64位操作系统,只需将应用程序池更改为使用WOW即可
  • 试试看。很容易启动一个新的EC2实例
  • 当切换到64位时,人们提到的另一件事是,他们认为有问题,因为应用程序使用的内存比32位时要多。这通常是由“指针膨胀”引起的。地址现在是64位宽,而不是32位宽


    在其他一些更极端的情况下,由于x64和x86.NET Framework具有不同的JITER,因此x64的优化方式不同,可能会影响性能,而不是提高性能。对于.NET Framework 2.0来说,如果不进行修补,这是一个更大的问题。

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

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

    您还可以将IIS工作进程作为32位应用程序运行,因此即使遇到以下问题,它也应该非常即插即用:


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

    应用程序是否仅编译为目标x86?通常,您可以将.net应用程序编译为处理器无关的,并让抖动来担心它。如果您目前的目标是x86,为什么会这样?因为这将是理解迁移到x64问题的关键。@vcjones我们目前在应用程序中使用fluent nhibernate、telerik grid、log4net、mysql connector和quartz.net作为第三方库?你有没有看到基于这些第三方库的任何障碍?@q07-如果你还没有看到,MySQL连接器将要求你使用“独立于架构”的版本。log4net会很好用,fluent nhibernate会很好用,剩下的就不确定了。