Tengo un servidor dedicado en el que ejecuto MySQL + Apache. Ejecuto un script de chat que sondea cada 3 segundos. Anoche mi servidor MySQL murió debido a la carga. Me pregunto cómo maximizar mis subprocesos MySQL y Apache.
¿Alguien puede indicarme URL que puedan ayudarme a lograr lo mismo?
Gracias por tu tiempo.
Respuesta1
El lugar canónico para la información de rendimiento de MySQL esBlog de rendimiento de MySQL. También está elMySQL de alto rendimientoLibro de Jeremy Zawodny.
Es posible que desee considerar alguna forma de agrupación de conexiones en su aplicación, donde reutilizará las conexiones de bases de datos existentes, en lugar de crear una nueva conexión para cada nueva sesión. Esto reducirá la sobrecarga de abrir una nueva conexión TCP y cualquier procesamiento que realice MySQL. También debería reducir la cantidad de conexiones inactivas que MySQL está ejecutando, ya que cada conexión requiere una cierta cantidad de memoria para existir.
Otra cosa que puedes hacer para reducir enormemente la carga de tu base de datos es integrar Memcached. Memcached es un almacén de valores clave distribuido en memoria; como un mapa hash adjunto a la red. Modificaría su aplicación para sondear memcached y, si no hubiera datos, verificar la base de datos. Cuando cambia los datos, los escribe en la base de datos e invalida los datos en Memcached. Esto significa que estarías sondeando Memcached significativamente más rápido que MySQL.
Una vez que haya implementado estas características, y sólo cuando lo haya hecho, puede comenzar a modificar los parámetros de MySQL. Existe un enorme potencial para arruinar las cosas y terminar con una base de datos que termine siendo más lenta que antes si no sabes lo que estás haciendo. Al menos habría leído el libro MySQL Performance antes de intentar esto.
Si puede gastar más dinero, la primera mejora sería dividir su base de datos en un servidor separado. Si eso no es suficiente, puede comenzar a considerar el uso de una configuración de replicación maestro y esclavo, donde las escrituras van al servidor maestro, pero las lecturas se distribuyen entre el maestro y el esclavo. Esto funciona particularmente bien para cargas de trabajo con mucha lectura, lo cual es bastante común.