Pregunta

Tengo un servicio web que se ejecuta en 3 servidores. El woreking es como sigue -Server solicitudes 1 recieves usuarios almacenan sobre db local y hace algún trabajo en él. -Server 2 y 3 son idénticos y los principales caballos de trabajo, que, según la petición Obtiene información de Internet y lo devuelve. . -Server 1 llamadas al servidor 2/3 a través de solicitud HTTP a través de LAN (hay un script php en el servidor 2 y 3 de modo servidor 1 llamadas como http: //localip/script.php ) -Server 1 pide alternatevely servidor 2 o 3 (esto se hace para distribuir la carga) Cada consulta en el servidor 2/3 tarda aproximadamente 8 segundos al proceso. Ahora cuando he instalado una herramienta de monitoreo en todos los servidores se encontró que el server1 es tener demasiada carga (que mostró el número del proceso> límite crítico) No es esta la manera de equilibrar la carga? ¿Cómo puedo reducir la carga del servidor 1 en?

¿Fue útil?

Solución

Servidor 1 está respondiendo a las solicitudes entrantes de sus usuarios. Así que si usted ha determinado que es el cuello de botella, entonces usted necesita para enfocar su atención allí.

Si el servidor 2 y 3 sólo están realizando consultas a internet, entonces probablemente no están haciendo demasiado procesador de trabajo / disco sabia.

Si usted tiene 2 servidores configurados para realizar una tarea bastante fácil, y el servidor de cara al usuario principal está sobrecargado tal vez sería mejor simplemente para ejecutar los 3 servidores como de cara al usuario.

A partir de lo que usted describe suena como servidor # 1 es el bloqueo de la respuesta de los servidores 2 y 3, lo que significa que tiene que mantener abiertas muchas conexiones potencialmente. Si los servidores de 2 y 3 no son realmente no que mucho trabajo, ya que su tarea consiste en consultas de Internet sólo tiene que probablemente sería mejor servido por la fusión de los servidores de cara al usuario y el motor de consulta en un servidor y la distribución de la carga de usuarios a través de los 3 servidores .

De este modo, cada servidor tiene un menor número de conexiones de usuario abierta. Y el motor de consulta todavía no está acaparando los recursos (si se trata de peticiones web sólo), así que no es un impacto negativo en el rendimiento del usuario.

A sólo algunas ideas para usted. No es posible estar totalmente definitiva sin saber más acerca de su aplicación.

Comentarios adicionales

Como se mencionó en los comentarios que usted debe buscar en un equilibrador de carga adecuado, un buen equilibrador de carga de hardware es la primera recomendación. ¿Dónde estás ejecutando sus servidores? Si están en una nube de centros de datos como Amazon EC2, Rackspace, etc, entonces el equilibrio de carga servicios están fácilmente disponibles para usted.

También puede utilizar un equilibrador de carga de software. Apache proporciona esta funcionalidad aún:

http://httpd.apache.org/docs/current/mod/ mod_proxy_balancer.html

A pesar de su configuración actual, sería posible poner Apache frente a uno de los servidores y luego ajustarlo para que el servidor con Apache (haciendo el balanceo de carga) consigue un menor porcentaje del tráfico, para compensar el gasto del servidor Apache. En este caso usted no tiene ningún cambio de hardware. Aunque tiene un único punto de fallo obvio, no muy diferente a lo que tenemos ahora, sin embargo, un equilibrador de carga apropiada generalmente alivia el problema de un solo punto de fallo que tiene actualmente con su arquitectura.

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