Configuración del servidor para 100 usuarios

Configuración del servidor para 100 usuarios

Tengo un problema relacionado con qué servidor aproximar para el siguiente escenario (una situación real):

Tengo un servidor donde se almacenarán algunos videos a los que se puede acceder a través de una aplicación web que se ejecuta en este servidor. Habrá alrededor de 100 usuarios (concurrentes) que lo usarán (generalmente a través de tabletas o teléfonos, pero también se incluirán PC).

¿Puede darme alguna idea sobre cómo crear la configuración de hardware para este servidor? El sistema operativo que se ejecutará será Linux.

Gracias de antemano.


EDITAR I:

El servidor web que uso es Apache HTTP, pero es muy probable que actúe como proxy para un Javaservidor (instalado en esta máquina, por supuesto).

Otras aplicaciones que se ejecutarán en este servidor serán:

  • una solicitud de autenticación
  • una solicitud para la administración.

Este servidor también funcionará continuamente (24 horas al día, 7 días a la semana).

Respuesta1

Según su descripción, parece que el caso de uso principal del servidor será transmitir videos a 100 clientes.

Ante esto, los dos subsistemas más importantes para el servidor serán:

  1. La conexión de red
  2. El sistema de almacenamiento

Para dimensionarlos según el rendimiento, necesita saber cuánto ancho de banda necesita; esto depende de la calidad del video que ofrecerá. Suponiendo que el vídeo sea de 1 MB/s, para 100 usuarios, tanto la red como los sistemas de almacenamiento deben poder entregar 100 MB/s (800 Mb/s para la red) de datos.

Si el ancho de banda de la conexión de red es mayor de lo que un solo enlace puede manejar y no puede darse el lujo de aumentar la velocidad del enlace (es decir, migrar de 1 GbE a 10 GbE/40 GbE), entonces puede agregar más enlaces y agregarlos en la capa 2 o usar varios. Dirección IP (una por enlace) y distribuir las conexiones a través de la aplicación. También debe asegurarse de que la ruta de datos desde el servidor a los clientes pueda manejar la capacidad; ¡no tiene sentido que el servidor pueda entregar 10 Gbps si hay un cuello de botella en otra parte de la red!

Para el sistema de almacenamiento, debe asegurarse de que pueda manejar tanto el ancho de banda como la cantidad de IOPS (IO por segundo) para entregar los datos. Según nuestro cálculo anterior, necesitarás 100 MB/s de lecturas de streaming, pero como tienes 100 usuarios, el sistema de almacenamiento debe poder manejar al menos 100 IOPS. Si espera que los usuarios naveguen por los vídeos, necesitará mucho más para mantener el rendimiento. Si bien los discos duros pueden ofrecer un buen rendimiento de transmisión cuando no tienen competencia, consideraría los SSD cuando aumenta la cantidad de accesos simultáneos.

Más allá de estas caracterizaciones básicas de rendimiento, también es necesario considerar la confiabilidad tanto de las conexiones de red como de los sistemas de almacenamiento. ¿Qué sucede en caso de fallas en los enlaces o fallas en el disco duro? Si desea continuar brindando el servicio, debe tener múltiples enlaces y una configuración de almacenamiento resistente (a través de RAID o replicación de datos a nivel de aplicación/sistema de archivos).

La RAM para el sistema de almacenamiento lo ayudará a almacenar en caché los videos y aliviará un poco la carga del sistema de almacenamiento, por lo que si espera que muchas personas vean el mismo video, generalmente será útil tener más RAM. Pero si el tamaño del conjunto de trabajo (los datos a los que se accede comúnmente) es mayor que la cantidad de RAM en el sistema, no se sorprenda si no ve una gran mejora.

Debido a que la mayor parte del sistema entregará datos a través de IO, probablemente no necesite mucha potencia de CPU, por lo que cualquier CPU multinúcleo moderna debería ser suficiente. Aunque debes tener cuidado de que si tienes varias CPU en una arquitectura NUMA, no sobrecargues la interconexión de la CPU.

Una vez que tenga el hardware, debe compararlo para asegurarse de que ofrezca rendimiento. Para el sistema de almacenamiento recomiendo elfioherramienta, le permite probar escenarios específicos como lecturas en streaming con 100 lectores simultáneos.

Teniendo en cuenta todo lo que he dicho anteriormente, deberías hablar con tu proveedor preferido y ver qué configuración recomiendan. Si incluye sus requisitos como parte de la RFP (especialmente si incluye requisitos estrictos, como la capacidad de ofrecer un perfil de IO particular), puede facilitar la resolución de cualquier falla en el rendimiento más adelante.

Al diseñar estos sistemas, intente pensar en cómo se mueven los datos a través del sistema y dónde estarán las limitaciones.

Finalmente, asegúrese de diseñar el sistema con exceso de capacidad para que pueda manejar tanto el crecimiento como los picos de tráfico.

Respuesta2

Es difícil proporcionar una configuración exacta del servidor dependiendo de la cantidad de usuarios simultáneos, ya que también depende de su código y de la optimización de la base de datos. Básicamente, necesita realizar evaluaciones comparativas para su aplicación y servidor, por lo que hay muchas herramientas de código abierto disponibles para hacer esto, como

Puede realizar una evaluación comparativa completa y también una evaluación comparativa de pila

Herramientas como

  1. ab
  2. http_cargar
  3. banco de sistemas
  4. punto de referencia unix

etc. están disponibles.

Respuesta3

¿Puede darme alguna idea sobre cómo crear la configuración de hardware para este servidor? El sistema operativo que se ejecutará será Linux.

Sí. Utilice el tamaño doble.</irony>

No, imposible desde esta etapa. podrías optar por una máquina de 4 núcleos y 4 GB de RAM o mot, esto realmente depende de lo que vayas a hacer con ella. Si solo ofrece descargas desde el sistema de archivos, entonces una máquina pequeña estaría bien, pero cuando se trata de Java et al... ¡comportamiento!


Para ser más específico, tú también deberías ser más específico.

  • ¿Qué servidor web?
  • ¿El servidor es solo para descarga?
  • ¿Software adicional basado en web como cms, etc.?
  • ¿Pila LAMP completa?
  • ¿Se necesita 24 horas al día, 7 días a la semana?

Sugeriría nginx si el objetivo principal es entregar videos y actuar como un proxy inverso para su aplicación Java. Es mucho más liviano que Apache y maneja más conexiones simultáneas y necesita menos recursos del sistema.

para su sección de descargas, intente evitar las aplicaciones web y proporcione sus archivos directamente desde su proxy inverso; esto reducirá el rendimiento general necesario.

tenga en cuenta que nginx tiene algunos módulos excelentes para actuar como un servidor estático para videos


con respecto a 24 horas al día, 7 días a la semana: ¿necesitasaseguraroperaciones 24 horas al día, 7 días a la semana? entonces necesitarás una configuración de conmutación por error.

información relacionada