Pregunta

Déjame enmarcarlo de esta manera ...

" Digamos que tengo un servidor de aplicaciones que se ejecuta en un único procesador Intel & amp; sirviendo a 200 usuarios concurrentes. Mover el hardware a un sistema de doble núcleo permitirá que mi servidor de aplicaciones ahora sirva, digamos, 350 usuarios concurrentes " ?

La pregunta básica que espero abordar es: "La adición de núcleos de procesador adicionales puede ayudar a aumentar las capacidades de E / S del servidor". Porque a veces eso es exactamente lo que los vendedores de hardware sugieren cuando promocionan sus servidores de múltiples núcleos.

¿Fue útil?

Solución

Debe perfilar su servidor, determinar su cuello de botella y tratarlos.

Si tiene un límite de memoria, compre más memoria o compre una computadora con memoria más rápida.

Si está vinculado al disco y está sirviendo mucho contenido estático, considere una unidad SSD.

Si su base de datos está vinculada, considérelo.

Pero, por lo general, está "vinculado a la configuración" y modifica su configuración, p. cambiar el número de subprocesos en un grupo, o tal, le dará una mejora inmediata.

Muchos servidores web y bases de datos son exactamente el software escrito para aprovechar los núcleos adicionales. Por supuesto, muchos también cobran tarifas de licencia por núcleo, así que considere ese aspecto también.

Otros consejos

Puede que veas o no un beneficio, pero como la CPU no está realmente haciendo E / S, no esperaría ningún beneficio significativo si las tareas están principalmente vinculadas a E / S.

EDITAR: Mi respuesta asume que su código está escrito de tal manera que realmente está utilizando múltiples núcleos. Si no es así, su aplicación no se beneficiará de núcleos adicionales, pero la máquina estará mejor equipada para realizar otras tareas simultáneas.

Eso, por supuesto, depende de cómo se haya escrito su servidor de aplicaciones. Si el software no utiliza ninguna técnica de programación paralela, entonces no podrá ejecutarlo en paralelo, incluso si el hardware lo admite.

Si su servidor es de un solo subproceso (usando IO basado en selección), y el procesamiento de solicitudes está libre de efectos secundarios (es decir, podría ser paralelizado conceptualmente), entonces ejecutar múltiples instancias en una máquina de múltiples núcleos maximizará Utilidad computacional de la máquina.

Si esto se traduce en un mayor rendimiento o no depende de si el procesamiento de la solicitud estaba vinculado a la CPU. Como regla general, IO es el principal cuello de botella en los sistemas distribuidos. Pero dicho esto, si el ensamblaje del mensaje (solicitud) requiere un cálculo significativo, entonces hay una cierta sobrecarga de CPU por solicitud más allá de los costos de E / S. Tener múltiples cpus asistencia claramente marcaría la diferencia en ese caso.

Más allá de las consideraciones de nivel de protocolo, obviamente si el procesamiento de cada solicitud requiere cálculos significativos, tener un cuello de botella en la CPU afectará la disponibilidad del servidor. El uso de múltiples CPU ayudará claramente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top