Servidor de administración: seis razones comunes para que el servidor se bloquee

  

Si no tiene experiencia, aprender a extender un sitio web es bastante difícil. Supongamos que ahora que tiene muchos sitios como highscalability.com, necesita algunas buenas soluciones para ampliarlos, pero no existe una "medicina universal" en el mundo, y ninguna solución puede adaptarse a las necesidades de todos los sitios web. Debe hacerlo usted mismo y pensar constantemente para encontrar una solución que satisfaga sus necesidades. Yo hice lo mismo.

Hace algunos años, mi jefe vino a mí y me dijo: "Tenemos un nuevo proyecto que queremos ofrecerle. Es principalmente una refactorización de sitios web, dentro de un mes, este sitio Ya tengo 1 millón de usuarios. Debe reconstruir este sitio web para asegurarse de que podamos manejar el creciente número de usuarios en el futuro. "Ya soy un programador experimentado, pero no soy bueno en esto, así que no puedo No empiece a aprender cómo extender un sitio web, todo el proceso ha atravesado dificultades.
(Se recomiendan artículos relacionados: Refactorización: "Por qué" y "Cómo hacerlo")

El software de fondo para este sitio es un sistema de administración de contenido PHP basado en Smarty y MySQL. La primera tarea es encontrar una empresa de hospedaje adecuada que necesite tener una amplia experiencia en la administración de servidores para nosotros. Después de algunas investigaciones, encontramos una empresa como esta y luego les dijimos nuestras necesidades. La configuración recomendada que nos dieron es la siguiente:

Load Balancer (+ Fallback)
2 Servidores Web < BR> MySQL Server (+ Fallback)
Developing Machines
Dijeron que esto es todo lo que necesitamos, estamos convencidos. La última configuración que obtuvimos fue:

equilibrador de carga (un solo núcleo, 1 GB de RAM, libra)
2 servidores web (doble núcleo, 4 GB de RAM, Apache)
servidor MySQL (cuatro núcleos, 8 GB) Memoria)
Máquina de desarrollo (un solo núcleo, 1 GB de memoria)
Esta configuración es muy básica y no se ha optimizado aún más. Para sincronizar archivos (PHP y archivos de medios), construyeron un DRBD activo-activo. Finalmente, comenzó la refactorización; por supuesto, estamos muy emocionados. Temprano en la mañana, cambiamos el nombre de dominio a una nueva IP, ejecutamos nuestro script de monitoreo y observamos la pantalla. Inmediatamente vimos tráfico en estas máquinas y todo parecía funcionar muy bien. La página se carga muy rápidamente, y MySQL está cargado con muchas tareas de consulta, y todos estamos muy contentos.

Entonces, de repente, nuestro teléfono comenzó a sonar: "No podemos visitar su sitio web. ¿Qué está pasando?" Observamos nuestro software de monitoreo y resultó ser el caso: el servidor ¡Estar congelado, el sitio está desconectado! Por supuesto, lo primero que hicimos fue llamar a nuestro proveedor de alojamiento: "Todos nuestros servidores están muertos. ¿Qué está pasando?" Prometieron verificar la máquina. Llamaré de nuevo más tarde. La llamada llegó: "Tu sistema simplemente no puede intervenir. ¿Qué has hecho? Está completamente desordenado". Detuvieron el equilibrador de carga y me dejaron observar uno de los servidores web. Me sorprendió ver el archivo index.php. Contiene algunos fragmentos de código C extraños, mensajes de error y algo que parece un archivo de registro. Después de una investigación adicional, encontramos que el DRBD causó el accidente.

Una forma de "matar" su servidor

Coloque Smarty compile y template cache en un clúster DRBD activo-activo altamente cargado, entonces su servidor se bloqueará Cuando nuestro proveedor de alojamiento reparó el servidor web, reescribí parte del código del CMS para almacenar los archivos de caché de Smarty en el sistema de archivos local de estos servidores. ¡Estamos en línea otra vez!

Es tarde. Este sitio suele tener un pico en la noche hasta la noche. Por la noche, casi no hay tráfico. Hemos estado mirando el software de monitoreo, y todos estamos muy nerviosos. Este sitio web se puede cargar, pero más adelante, cuanto mayor sea la carga del sistema, más lenta será la respuesta. Agregué la vida útil de la memoria caché de la plantilla de Smarty, espero que esto funcione, pero desafortunadamente esto no funcionó. Pronto, el servidor comenzó a dar tiempos de espera, páginas en blanco y mensajes de error. Hay dos máquinas que no pueden manejar la carga.

Nuestros clientes están un poco nerviosos en este momento, pero él dijo: OK, la refactorización generalmente causa algunos problemas. Mientras pueda solucionarlo rápidamente, está bien.

Necesitamos un plan para reducir la carga, y luego lo discutimos con nuestro proveedor de alojamiento. Uno de sus administradores de sistemas propuso una buena idea: "Hombre, su servidor ahora se está ejecutando en una arquitectura Apache + mod_php muy común. ¿Qué hay de reemplazar su servidor web con Lighttpd? Es un proyecto bastante pequeño, pero Wikipedia lo está utilizando. "Estuvimos de acuerdo.
(Se recomiendan artículos relacionados: mejores opciones para las cuatro alternativas al servidor Apache)

"Métodos para matar" a su servidor

Obtenga un sitio web listo para usar El servidor está configurado en su máquina y no está optimizado en absoluto, ¡entonces su servidor se bloqueará! El administrador hizo todo lo posible por reconfigurar todos los servidores web lo antes posible. Abandonó a Apache y cambió a Lighttpd + FastCGI + Xcache. Más tarde, cuando relanzamos, apenas volvimos a sentir la presión. ¿Cuánto durarán estos servidores?

Estos servidores son sorprendentemente buenos para ejecutar. La carga es mucho menor que antes y el tiempo de respuesta promedio es bueno. Nos sentimos completamente aliviados, y luego nos fuimos a dormir a casa. Ya es tarde y no creemos que haya algo más que debamos hacer. Al día siguiente, el sitio funcionaba bastante bien, pero durante las horas pico estaba cerca del borde del accidente. Encontramos que MySQL era el cuello de botella y llamamos a nuestro proveedor de alojamiento nuevamente. Recomiendan usar MySQL para realizar la sincronización maestro-esclavo de MySQL desde el servidor en cada servidor web.

El tercer método para matar su servidor

El potente servidor de base de datos también tiene sus límites. Cuando alcance su límite, ¡su servidor se bloqueará! En este caso, a veces su base de datos se volverá tan lenta que una gran cantidad de conexiones de red en la cola "matará" a nuestro servidor web nuevamente. Lamentablemente este problema es difícil de solucionar. El sistema de administración de contenido es muy simple a este respecto, y no admite la lectura y escritura de consultas SQL individualmente. Tomó mucho tiempo reescribir esto, pero vale la pena encontrar la hibernación cada minuto.

La sincronización de MySQL fue realmente exitosa, y el sitio finalmente se mantuvo estable. En las próximas semanas y meses, el sitio fue un éxito y la cantidad de usuarios comenzó a aumentar. El tráfico nuevamente excede nuestros límites de recursos, lo cual es solo una cuestión de tiempo.

El cuarto método para matar tu servidor

¡No hay planificación previa, tu servidor puede bloquearse!

Afortunadamente, hemos estado pensando Y ha estado planeando. Optimizamos el código y reducimos la cantidad de consultas SQL necesarias para cargar cada página. De forma inesperada, encontramos a MemCached como una buena opción. Primero, agregamos soporte para MemCached en algunas funciones básicas, y también agregamos soporte para MemCached en algunas características pesadas (de ejecución lenta). Cuando implementamos estos cambios, no podemos creer el resultado, se siente un poco como descubrir el Santo Grial. Nuestro número de consultas por segundo se ha reducido al menos en un 50%. Decidimos usar MemCached más que comprar otro servidor web.

Cinco formas de matar su servidor

¡Olvidarse de hacer caché, perderá mucho dinero y su servidor se bloqueará! Resulta que MemCached nos ayuda a reducir 70% -80% de la carga en el servidor MySQL, mientras tanto, en el servidor web, también produjo un gran aumento de rendimiento. La página se carga bastante rápido.

Al final, nuestra configuración parece ser perfecta. Incluso durante las horas pico, no tenemos que preocuparnos por los bloqueos o las respuestas lentas de la página. ¿Lo tenemos? ¡No! Un servidor web azul comenzó a responder un poco lentamente. Luego hay algunos mensajes de error, páginas en blanco, etc. Este sistema tiene una capacidad de carga muy buena y, en la mayoría de los casos, el servidor funciona, pero solo en la mayoría de los casos.

Seis formas de matar tu servidor

Coloca cientos de archivos pequeños en una carpeta. Cuando el nodo de índice se agote, tu servidor Se cuelga!

Sí, no te equivocas. Solíamos centrarnos en MySQL, PHP y el servidor web en sí, y no prestamos mucha atención al sistema de archivos. Los archivos de caché de Smarty se almacenan en el sistema de archivos local: todos los archivos de caché se almacenan en el mismo directorio. La solución es poner a Smarty en una partición ReiserFS dedicada. Además, también hemos activado la opción "use_subdirs" de Smarty.

En los últimos años, hemos estado optimizando la página. Ponemos el caché de Smarty en memcached. Para manejar los archivos estáticos más rápidamente, instalamos Varnish para reducir la carga de E /S. También cambiamos a Nginx (Lighttpd generará aleatoriamente mensajes de error 500), instalaremos más memoria, compraremos mejor hardware, más hardware ... Esta lista nunca terminará.

Resumen

Extender un sitio web es un proceso que nunca termina. Cuando resuelva un cuello de botella, es probable que encuentre el siguiente cuello de botella. Nunca pienses así: "Eso es todo, hemos terminado" y luego mantente en espera. Esto "matará" a su servidor, o incluso a su negocio. La planificación y el aprendizaje es un proceso continuo. Si no puede hacerlo usted mismo por falta de experiencia o recursos, puede encontrar un socio que sea capaz de hacer el trabajo y que sea muy confiable, y trabajar con él para hacer el trabajo. Nunca deje de comunicarse con su equipo y sus socios sobre algunos de los problemas que está experimentando actualmente y algunos de los problemas que encontrará. Piensa antes de que puedas salir adelante.

Copyright © Conocimiento de Windows All Rights Reserved