Pregunta Diferencias de rendimiento de servidor web Linux vs Windows 7


Intenté recientemente realizar algunos puntos de referencia y quería comprobar algo en Windows y había descubierto enormes diferencias de rendimiento entre los servidores web HTTP básicos en la misma máquina con Linux y Windows.

He probado varios servidores web IIS, Apache2, Lighttpd con diferentes clientes Apache's ab y mi propio cliente y el resultado fue el mismo (solicitudes por segundo) ID que muestra una Página web HTML simple (página del servidor web predeterminado) de varios cientos de bytes:

           IIS 7.5   Apache 2.2  Lighttpd
Windows    750         800        -
Linux      -         9,300        22,000

He intentado desactivar el antivirus en Windows pero el resultado no ha cambiado.

No entiendo una cosa, como en mismo hardware (i5 2.4GHz 4G) un servidor web en la tarea más trivial no puede manejar las mismas cargas.

Incluso si soy "pro-Linux", todavía no puedo ver cómo puede ser tan diferente. Ambos Los últimos sistemas operativos de 64 bits (Linux 2.6.35 y Windows 7) pero sin embargo, la diferencia de un orden de magnitud.

Ambiente:

  • SO Windows 7 64 bit pro. Linux Ubuntu 2.6.35
  • HW i5 2.4 GHz, 4GB de memoria
  • IIS 7.5, Apache 2.2
  • Cliente ab:
  • Llamado ab -c 5 -n 10000 http://127.0.0.1/

Pregunta:

  • ¿Qué puedo extrañar para llegar a grandes diferencias?

Antes de votar para cerrar:

Tenga en cuenta que es una pregunta real ya que estoy buscando posibles factores que pueden afectar tan grandes (orden de magnitud) diferencias de rendimiento, ya que no puedo creer que Windows puede comportarse tan mal

¿Nadie?


5
2017-09-29 20:19


origen


¿Deshabilitó todos los servicios / funciones inútiles en Windows (no estoy seguro de que todos puedan detenerse)?
Eso parece una diferencia demasiado grande. Me pregunto si algo diferente está sucediendo a nivel de red, por ejemplo, Windows ab ¿Desconectando e iniciando una nueva conexión HTTP para cada solicitud? - bobince
Fwiw, alguien encontró resultados similares en un artículo que leí hace uno o dos años. Con un montón de violines, pudieron reducir la diferencia, pero no tanto como uno estaría contento.
4 GB de memoria parece "bajo" para un servidor con Windows7. - Luc M
¿El hecho de que IIS esté en el sistema operativo de un cliente no influiría en los resultados? No me imagino que la configuración predeterminada de las redes del sistema operativo (por ejemplo) se establezca para ser un servidor cuando se ejecuta la versión de escritorio. - Rangoric


Respuestas:


Para todos los respondedores que sugirieron usar Windows Server 2008 ...

Fue AniVirus. No fue deshabilitado correctamente.

Una vez que se deshabilitó, el rendimiento mejoró de 600 req / s a ​​5000 req / s, no tan bueno como Linux pero al menos razonable.


3
2017-10-05 20:06





Me interesaría más ver una comparación con el servidor R2. Windows 7 no debería estar ejecutando servidores web, aunque estoy de acuerdo en que la diferencia en los resultados parece extrema.


2
2017-09-30 11:37



No necesariamente Ignore IIS: la pila TCP en 7.0 está teniendo mecanismos para ralentizar la creación de nuevas conexiones TCP. - TomTom
@TomTom Todavía sostengo que es una comparación bastante irrelevante. Microsoft produce dos (esencialmente) sistemas operativos: uno para uso doméstico, otro para uso de servidor. Pueden estar basados ​​en los mismos fundamentos pero son sistemas operativos fundamentalmente muy diferentes. Ubuntu tiene principios de diseño completamente diferentes, lo que realmente significa que tiene que comparar las funciones del servidor con el Servidor 2008 R2 y las funciones del sistema operativo del cliente con Windows 7. Cualquier otra cosa simplemente no produce resultados concluyentes en mi opinión. - Dan


Una prueba que podría hacer para ver si tiene que ver con la capa del sistema operativo o una versión inferior sería volver a ejecutar la prueba de Linux mientras se encuentra en una VM que se encuentra en Windows 7. Si experimenta números similares, pero un poco menos, entonces el linux original Demuestra que Windows 7 es el responsable. Si experimenta números similares a Windows 7, es posible que tenga un problema con la forma en que Windows 7 usa su hardware, posiblemente un problema con el controlador o un problema similar de bajo nivel.


0
2017-09-29 21:12



No estoy usando VM. Esta es la configuración de arranque dual - Artyom


Probar una página estática con poco o ningún contenido mientras se usa un número limitado de conexiones es una mala prueba.

Lo que quieres hacer es simular que más de 30 usuarios accedan a páginas que están golpeando PHP y MySQL con múltiples activos.

En cuyo caso verá un WAMP bien configurado (como WampDeveloper, que es el que uso) que coincide o supera a una configuración de LAMP similar.

Bajo Windows, los hilos son el mecanismo preferido (frente a los modelos basados ​​en procesos en Linux).

Asegúrese de que está utilizando PHP como un módulo basado en subprocesos (no es un proceso FCGI, aunque eso también funcionaría).

Edita tus configuraciones de Apache KeepAlive y MPM ...

C: \ WampDeveloper \ Config \ Apache \ extra \ httpd-default.conf

KeepAlive On
KeepAliveTimeout 1

C: \ WampDeveloper \ Config \ Apache \ extra \ httpd-mpm.conf

ThreadsPerChild 64
ThreadLimit 64

Esto configurará aproximadamente 64 subprocesos, cada uno de los cuales se mantendrá en el mismo cliente durante aproximadamente 1 segundo.

ab -c 32 -n 10000 http://127.0.0.1/page-with-PHP-and-MySQL-and-Assets.php


-1
2017-10-19 18:23



¿He hablado de PHP? ¿He estado hablando de Sql? He estado hablando de algo muy básico: a nivel de sistema operativo, el servidor cliente HTTP que funcionó mal en Windows 7. - Artyom
@Artyom, mi culpa por entender mal las premisas de su pregunta. - rightstuff