Consejos de rendimiento del servidor LAMP [cerrado]


11

¿Qué consejos de rendimiento se pueden ofrecer a alguien que ejecuta un servidor LAMP?

En el caso de que algo sea específico de Distribución, estoy apuntando a Debian.

Respuestas:


26

Realmente depende de tu carga de trabajo.

  • para la parte L

    • obtener mucha memoria
    • si puede superar los 4 GB, vaya a 64 bits.
    • para particiones donde su contenido, registros y datos MySQL son opciones de montaje: noatime, nodiratime.
    • use unidades físicas / conjuntos de incursiones separadas, idealmente mantenga datos SQL, registros, contenido que sirve, cada uno en un husillo separado.
  • para la parte A de su pila, bueno, tal vez desee reemplazarlo por completo con nginx o lighthttpd , o tal vez simplemente dejar Apache para contenido dinámico y tener un servidor separado (como esos dos o mathopd ) para contenido estático. Echa un vistazo aquí para más opciones. Si va a ejecutar Apache y otro servidor en el mismo cuadro, una segunda dirección IP será útil. Para disminuir la latencia para el usuario final, use http / 1.1 con keep-alive. Considere usar un CDN para contenido estático.

  • para la parte M de su lámpara, eche un vistazo a mysqlperformanceblog . desde lo alto de mi cabeza:

    • registrar consultas lentas,
    • dar suficiente memoria
    • considere usar innodb.
    • si tiene mucho texto para buscar, use sphinx y tenga un trabajo por lotes que reconstruya el índice.
    • considere matar consultas que duran más de XYZ segundos. Es mejor molestar al 1% de los usuarios que derribar todo el sitio en la hora pico. Pero eso realmente depende si procesa transacciones en efectivo o muestra buenas fotos.
    • use memcached si puede, para almacenar en caché el resultado de consultas SQL más "caras". Recuerde invalidar la memoria caché cuando cambie el contenido de SQL. Por otro lado, tengo bastantes sitios donde todos los datos se ajustan cómodamente en la memoria y para eso MySQL es increíblemente rápido y no hay necesidad de caché adicional.
  • para P

    • Establecer el tiempo de espera de ejecución para los scripts.
    • considere usar un poco de acelerador PHP / caché de código de operación. Estaba bastante satisfecho con xcache , pero ahora no lo uso.
    • si tiene un procesamiento intensivo de la CPU: guarde en caché los resultados y almacénelos en SQL o memcached

Realmente no es un consejo de rendimiento, pero tome copias de seguridad fuera del sitio. De Verdad.


1
si puedo agregar esto, recientemente escribí en un blog sobre copias de seguridad seguras con estrategias push y pull a través de amazon s3. no es viable para los datos bancarios, pero todo lo que pueda confiar en amzon debería estar bien. logaholic.de/2009/05/21/…
Karsten

De hecho, he notado esa publicación de blog antes de comentar; -]. agradable de todos modos. Siempre puede cifrar su copia de seguridad para que sea más segura.
pQd

3

Realmente sugiero separar MySQL y Apache / PHP en dos máquinas diferentes.

Por ejemplo, tuve una máquina (C2D E6600) que siempre aumentó a 2.0 y por encima del promedio de carga. Puse MySQL en una segunda máquina (P4C 3Ghz) y después de eso, ambos promedios de carga no superaron 0.2-0.3. Así que pasé de un sitio realmente lento a un sitio rápido con dos servidores que tienen mucho margen de rendimiento.


buen punto. Solo puedo especular que su cuello de botella podría haber sido la respuesta del subsistema IO / unidad. tal vez entonces separar los datos en dos unidades diferentes / tener un controlador de disco fino también podría ser el truco. de todos modos, más memoria y más cpus siempre es bueno, pero también obtienes más posibles puntos de falla.
pQd

Bueno, no estoy tan seguro de que fueran E / S de disco porque la mayoría (digamos el 90%) de los aciertos SQL se almacenaron en caché. Estaba pensando en los cambios de contexto de la CPU, pero no sé si eso realmente puede desempeñar un papel importante.
Antoine Benkemoun

1

Para la parte P, podría considerar el almacenamiento en caché de opcode con, por ejemplo, APC . También se podría considerar mod_fastcgi con php en lugar del mod_php predeterminado.


Realmente me gusta eAccelerator. Da el mejor rendimiento para mis sitios.
TheHippo
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.