
¿Cuáles son las implicaciones para el rendimiento de tener un servidor web (apache/php) y un servidor de base de datos (mysql) en ubicaciones completamente diferentes con diferentes hosts?
Editar: Es una aplicación web con uso intensivo de bases de datos, por lo que cada página realiza múltiples viajes a la base de datos. La base de datos normalmente es el cuello de botella en las aplicaciones web, solo me pregunto si la velocidad de la red es significativa en comparación con la velocidad típica de las interacciones con la base de datos.
Respuesta1
Esto depende en gran medida de la velocidad de conexión entre las dos ubicaciones. Algunas empresas tienen redes troncales de alta velocidad entre sus centros de datos, pero por lo que parece, estamos ante dos empresas diferentes. Dado que la conexión se realiza a través de Internet y las líneas están fuera del control de cualquiera de las empresas, no hay una respuesta sólida a esta pregunta.
Lo evitaría si fuera posible. Si realmente cree que este es el mejor enfoque, busque algo como Memcache para aliviar las consultas desde la base de datos.
Respuesta2
¿Cuáles son las implicaciones para el rendimiento de tener un servidor web (apache/php) y un servidor de base de datos (mysql) en ubicaciones completamente diferentes con diferentes hosts?
Sí, hay implicaciones para el rendimiento y todas son negativas. Un sistema de este tipo podría funcionar, especialmente si los dos sistemas están conectados mediante una VPN con un Acuerdo de Nivel de Servicio basado tanto en el tiempo de actividad como en el rendimiento. Si simplemente va a través de "la nube", no tendrá coherencia en el rendimiento de la red niuna garganta para estrangularsi la conectividad o el rendimiento disminuyen.
Me pregunto si la velocidad de la red es significativa en comparación con la velocidad típica de las interacciones de la base de datos.
Eso dependería totalmente desuvelocidad de la red ysubase de datos y aplicación.
Hay dos aspectos del rendimiento de la red a considerar: latencia y rendimiento. Necesitas considerar ambos.
Por ejemplo, los usuarios suelen ser pacientes (hasta cierto punto) a la espera de una consulta de búsqueda. Ellos van anotenga paciencia para que se cargue cada página mientras navega por un sitio. Si bien ambos se consideran latencia desde la perspectiva del usuario, el primer ejemplo podría ponderarse por el rendimiento de la red entre la base de datos y el servidor web, mientras que el segundo por la latencia de la red.
¡O no! Sólo las pruebas lo dirán.
Respuesta3
¿Qué tipo de consultas estás haciendo?
Si está realizando consultas complejas donde la velocidad de la CPU es su factor limitante, tal vez tener una conexión a la base de datos inferior a 10 MB/s y una alta latencia no sea tan notorio. (pero estas tendrían que ser consultas muy complejas o en una máquina con muy poca potencia)
Sin embargo,es posible que puedas acelerar las cosashaciendo almacenamiento en caché en la máquina del servidor web o configurando un pequeño servidor de replicación mysql local al servidor web que contiene copias de los datos a los que se accede con mucha frecuencia.
Si bien tener toda su base de datos ubicada de forma remota tendrá implicaciones negativas en su rendimiento, tenerla ubicada en dos ubicaciones definitivamente tiene implicaciones beneficiosas desde el punto de vista de la recuperación ante desastres.
Respuesta4
¿Cuál es el tamaño promedio de los datos solicitados al servidor de la base de datos, cuál es el ancho de banda disponible entre los dos y cuánto tráfico tiene? Debería ser bastante fácil determinar si habrá un cuello de botella espectacular.