¿Cuáles son los parámetros básicos que deciden cuándo necesitamos agregar servidores adicionales para aplicaciones web (LAMP)?

Tengo que estar de acuerdo con Jeremy Wilson, la primera advertencia de un problema será el tiempo de carga de la página.

Supongo que la pila de lámparas es PHP, Linux, Apache, MySQL y PHP.

Yo dividiría la pila para que MySQL esté en su propio servidor. Es más fácil ajustar los servidores cuando se les asigna una tarea. Hago esto incluso cuando no hay un problema de rendimiento; ya que no quiero que mi base de datos se encuentre en Internet.

Servidor web:

  1. Tendría al menos 3 tarjetas de red. Uno, en la dirección IP pública de los servidores, uno para uso de administradores, desarrolladores, que alguna vez necesitarán acceder al servidor en un IP privado # (192.168.100.30/24) y uno final en un IP privado # y un número 4 subred para la comunicación entre el servidor web y el servidor de bases de datos. (10.10.100.1/30) Usaría un cable cruzado para la conexión.
  2. A continuación, miraría el http.conf y eliminaría todo lo que no use.
  3. Luego a php.ini; de nuevo límpialo.
  4. Me gustaría ver cómo está configurado el sistema. Página en Ibm La mayoría de los Linux están configurados como escritorios. Me aseguraría de estar corriendo; Oracle Linux | Oracle o The Community ENTerprise Sistema operativo o una plataforma sin límites. Me gustaría que el sistema esté optimizado como un servidor web.
  5. Luego, revisaría los directorios web. Estoy buscando 2 cosas. Primero, las páginas web que deberían haberse eliminado. Los desarrolladores siempre dejan atrás el viejo código. En segundo lugar, desde archivos JPEG hasta páginas que parecen excesivamente grandes.
  6. Una vez, estaba seguro de que tenía los archivos y directorios de configuración lo más limpios posible, dispararía desde arriba. Presione la tecla 1 para ver todos los núcleos y ver.

Servidor de base de datos:

  1. Necesitará 2 tarjetas de red; uno para la interfaz 192.168.100.31 y el otro para la interfaz 10.10.100.2.
  2. Siguiente paso, tome el ejemplo my-huge-cnf, my.cnf que vino con la instalación de MySQL y úselo como su plantilla para el my.cnf que ejecutará. Nuevamente, elimine las partes que no usará.
  3. Mtop, es bueno para hacerle saber lo que está sucediendo con MySQL. Básicamente, usted quiere tener la mayor cantidad de índices posible en la memoria, parámetro Key-buffer-size, creo. mtop – Herramienta de monitoreo MySQL

Es más fácil agregar núcleos y RAM que los servidores:

  1. Suponiendo que tiene su servidor web, servidor de base de datos y código php optimizados y todavía tiene problemas. Mejora, tu equipo. obtén un par de Xeons de 6 u 8 núcleos y mucha RAM. El hardware puede curar muchos problemas.

Aún no es suficiente.

  1. Si el servidor web sigue siendo arrastrado de rodillas, intente dividir la funcionalidad. Un servidor, para servir todo el material estático, manejar la seguridad, https, contraseñas, etc. El otro para ejecutar los scripts php.

Los parametros:

  1. Este es el que cuenta. Sus páginas web se están cargando demasiado lentamente. El problema, por supuesto, es que necesitas arreglar el por qué.
  2. No hay RAM libre. O peor, mucho espacio de intercambio en uso.
  3. Un núcleo al 100%, utilización durante horas a la vez. Toda la CPU al 40%.
  4. Mucha actividad de la unidad en el servidor web. (y tienes RAM libre).
  5. En el servidor de la base de datos; tráfico en o cerca del 80% de la velocidad nominal de las tarjetas de red. Un número extremadamente grande de consultas SQL. Menos del 80% de uso del búfer clave y / o una baja tasa de aciertos de caché de consultas. Es más probable que se repare con más RAM que con más servidores.

Espero que esto ayude

Se trata de agotamiento de recursos.

Encontrará que sus servidores web están vinculados a RAM, CPU o IO (ya sea IO de red o IO de disco) cuando están en “máximos” para su aplicación.

Saber qué recursos son sus factores limitantes es clave. Por ejemplo, en lugar de agregar otro servidor web en la nube 1G, si está vinculado a la RAM, intente activar un servidor 4G, configúrelo para usar la mayoría (pero no la totalidad) de la RAM y vea qué sucede.

Si TODAVÍA usa toda la RAM y no maximiza la CPU o el IO, puede ir aún más lejos si su infraestructura en la nube permite máquinas virtuales aún más grandes.

Y sabrá dónde enfocarse para la optimización: descubra por qué la aplicación está usando tanta memoria e invierta en un trabajo único para solucionarlo y reducir sus costos operativos mensuales.

Con MySQL se vuelve más complicado.

Tiene el recuento de conexiones entre MySQL y apache para sintonizar. Y el tiempo de espera. Y la memoria por conexión que toma MySQL.

Cada vez que encuentre MaxClients, debe tener todo eso en consideración y ajustarlo también.

¡Espero que esto ayude! Hay mucho más, pero esto debería ayudarlo a comenzar.

Verifique su RAM libre y la carga de su servidor.
Para RAM, intente deshabilitar el intercambio, por lo que su RAM se usará en sus cálculos reales. Si está bajo VM, establezca vm.swapiness en 0.
Para la carga del servidor, intente que sea estable por debajo de 3.00, si llega a 3.00, verifique su uso de sql e intente limpiar cualquier proceso realizado por sql, o reinicie su sql.
Si la RAM y la carga del servidor aumentan rápidamente, debe pensar en optimizar su servidor o agregar un nuevo servidor.

Cuando los tiempos de carga de su página comienzan a aumentar debido a la carga.