x64 sistemas sistema saber que procesador operativos operativo mejor entre diferencia cual como asp.net iis 64bit 32bit-64bit 32-bit

asp.net - saber - sistemas operativos de 32 y 64 bits



¿Cuáles son los pros y los contras de ejecutar IIS como 32 bits frente a 64 bits en un sistema operativo de 64 bits? (5)

Además de las obvias diferencias de memoria, los procesos de 32 bits en un sistema operativo de 64 bits tienen que ejecutarse en algo llamado "Windows en Windows" o modo WOW. Básicamente es una capa de thunk / emulación. Hay una penalización de rendimiento si le presta suficiente atención.

Posiblemente mejor adaptado para "Rack Overflow", pero desde el punto de vista de un desarrollador, ¿cuáles son las ventajas y desventajas de ejecutar IIS (sirviendo tanto ASP y .NET clásicos heredados) como un proceso de 32 bits en lugar de un proceso de 64 bits en un host de Windows de 64 bits? ?

La principal ventaja de 32/64 (iis / server) sobre 32/32 parece ser la capacidad de subir a 4gb en memoria por proceso IIS.

Las ventajas que espero de 32/64 sobre 64/64 parecen ser que es más fácil acceder a las DLL heredadas de 32 bits en proceso (de las cuales todavía tenemos una de un proveedor asociado de la que no podemos alejarnos inmediatamente) y quizás una huella de memoria más pequeña para el mismo código dado punteros de memoria más pequeños.

¿Hay algún beneficio de rendimiento de 64/64 sobre 32/64 o cualquier otra cosa que justifique un cambio completo ahora? ¿He hecho alguna suposición falsa aquí?


La única ventaja de rendimiento para ejecutar IIS en 64 bits vevrsus de 32 bits es permitir el acceso a un espacio de direcciones de memoria mucho más grande.

Si está haciendo un procesamiento de página ASPX normal, es probable que no necesite direccionar más de 4gb desde un solo proceso. Supongamos que se ejecuta en modo de 32 bits con un jardín web con múltiples procesos de trabajo en la misma máquina. En ese caso, cada proceso puede abordar hasta 4 gb.

La gran ventaja puede venir cuando realiza el almacenamiento en caché. Un proceso de 64 bits puede mantener un gran caché en memoria (suponiendo que tenga 32 GB o más de RAM para admitirlo) que le permita almacenar en caché contenido o datos complejos de la página en el servidor web. Esto permite ganancias de rendimiento cuando los datos son más caros de generar que de recuperar, por ejemplo, si los datos son una forma elaborada (digamos el resultado de una simulación de monte carlo), o si los datos residen fuera de la caja y la red El tiempo de IO es mucho más caro que el tiempo de recuperación de la memoria caché.

Si no usa el almacenamiento en caché, entonces IIS de 64 bits no lo ayudará. Requerirá punteros de 64 bits para cada búsqueda, lo que hará que todo sea un poco más lento.

Los servidores de 64 bits son mucho más eficaces cuando se usan para bases de datos como SQL Server u otros servidores de administración de datos (digamos, un servidor de correo electrónico empresarial como Exchange) que para procesar servidores, como IIS o los procesos de trabajo que administra. Con un espacio de direcciones de 64 bits, los servidores que necesitan administrar datos pueden conservar muchos más de esos datos en la memoria, junto con índices y otras cachés. Esto ahorra tiempo de IO de disco y tiempo de elaboración cuando se produce una consulta. La mayoría de las aplicaciones web no necesitan abordar más de 4gb de un solo proceso.

Quizás una analogía útil: en el transporte, un SUV grande es como una máquina de 64 bits, mientras que un automóvil de pasajeros regular y compacto es como un servidor de 32 bits. Puede llevar muchas más cosas en un SUV grande, y tiene una capacidad de remolque más grande, capacidad para 8 personas y un GVWR de 8600 lbs . Pero con todo eso, pagas. El camión es más pesado. Utiliza más combustible. Si solo acarreas alrededor de 2 personas y una bolsa de lona, ​​no necesitas una SUV. Estarás mejor con el vehículo más pequeño. Puede ser más rápido y más eficiente.


No creo que hayas hecho suposiciones falsas. Pero diría que no, que probablemente no habrá diferencia de rendimiento entre ninguno de los escenarios que describió. 32 en 64 en Windows no funciona con una penalización. 64 en 64 puede dar un pequeño aumento de rendimiento, pero eso es dudoso. Puede haber algún ahorro de memoria con un proceso de 32 bits, pero esto probablemente sea anulado por el thunk requerido para ejecutar el proceso en primer lugar.

El único beneficio es el problema de DLL que mencionaste. Esa también podría ser una razón para actualizar (si tiene algo específicamente de 64 bits que necesita usar).


Para la disponibilidad de la memoria, consulte este blog msdn .

Disponibilidad de memoria Para mi aplicación, obtuvimos lo que necesitábamos para pasar de un proceso de 32 bits en un sistema operativo de 32 bits a un proceso de 32 bits en un sistema operativo de 64 bits, sin el problema de reemplazar las bibliotecas de terceros. Entonces, nos detuvimos allí. Los beneficios son: 1) 2-3 x memoria efectiva disponible para cada proceso de trabajo de IIS y 2) En un sistema operativo de 32 bits donde el sitio web usa mucha memoria, otros procesos del sistema y sitios web compiten por una memoria total limitada. Para su aplicación, observe cuánta memoria usan los procesos de su trabajador. Si cada WP no usa mucha memoria (más de 1GB), los procesos de trabajo de 64 bits no ayudarán mucho.

Para el rendimiento, creo que debes probar tus propias aplicaciones en ambas configuraciones. La publicación de Dave anterior indica que podrías tener una degradación del rendimiento con 64 bits. Como señala Cheeso , algunas aplicaciones pueden ver los beneficios del almacenamiento en caché (sin embargo, 2GB + de caché es mucho). A excepción de aplicaciones limitadas y simples, no creo que podamos hacer generalizaciones de rendimiento. Podríamos señalar tecnologías específicas que funcionan mejor o peor.


Tuve una experiencia donde pasar de un servidor de Windows 2003 de 32 bits a un servidor de Windows 2003 de 64 bits ambos ejecutando IIS 6 y el rendimiento del sitio web de ASP.NET 3.5 era inaceptable.

El servidor de 64 bits se ejecutará claramente 2 segundos detrás del de 32 bits uno constantemente.

Después de cambiar IIS 6 para que se ejecute como un proceso de trabajo de 32 bits, el rendimiento fue igual y comparable una vez más.

No lo he verificado, pero creo que solo se aplica a IIS6 win2k3, ya que las pruebas que he hecho con IIS7 x64 (Vista) y un proceso de trabajo IIS de 64 bits parecen funcionar bien.

El proceso para cambiar al proceso de 32 bits fue bastante simple. Aquí está el artículo de KB con los detalles de soporte: http://support.microsoft.com/kb/894435/en-us

ASP.NET 2.0, versión de 32 bits Para ejecutar la versión de 32 bits de ASP.NET 2.0, siga estos pasos:

  1. Haga clic en Inicio, haga clic en Ejecutar, escriba cmd y luego haga clic en Aceptar.
  2. Escriba el siguiente comando para habilitar el modo de 32 bits: cscript% SYSTEMDRIVE% / inetpub / adminscripts / adsutil.vbs SET W3SVC / AppPools / Enable32bitAppOnWin64 1
  3. Escriba el siguiente comando para instalar la versión de ASP.NET 2.0 (32 bits) e instalar los mapas de scripts en la raíz de IIS y debajo:% SYSTEMROOT% / Microsoft.NET / Framework / v2.0.50727 / aspnet_regiis.exe -i
  4. Asegúrese de que el estado de ASP.NET versión 2.0.50727 (32 bits) esté establecido en Permitido en la lista de extensiones del servicio web en Internet Information Services Manager.

Consulte el artículo de KB para volver a configurar 64 bits.