Hola a todos, tengo una web con miles de visitas y a veces va lenta. El servidor tiene centos con apache instalado.
He pensado en dos cosas:
-reemplazar apache por nginx
-instalar page_speed+varnish
QUé creéis que es lo mejor? Qué recomendáis?
Salu2!
Nginx en estas cosas es muy superior y algo mas estable que Apache por como maneja las visitas. También depende de que mod mpm usas en Apache.. el prefork o el worker.
Eso de que "a veces va lenta" tendrías que mirar porque es y no tirarte de cabeza a cambiar el httpd. Recuerda que hay muchas variables como el script que uses, el cms, la BD especialmente si tiene alguna slow query.
Si estas decidido a cambiar yo te recomendaría cambiar a nginx en vez de intentar seguir con Apache, es algo lioso al principio pero luego te acostumbras. Si usas PHP y el prefork tendras que reinstalar PHP para que use FPM pero poco mas.
mod_pagespeed (si estamos hablando del de Google) no te va a ayudar si tu server sufre en procesar las peticiones pues tiene mas bien optimizaciones client-side y a lo sumo igual añade incluso mas carga al server.
En fin, en mi opinión, consulta primero donde tienes el problema para que se vuelva mas lento, luego mira si puedes solucionarlo cambiando la configuracion (httpd.conf) cambiando los valores de los workers y los child proc... si no se arregla entonces ya si intenta cambiar a otro MPM o a Nginx.
Saludos
usar un acelerador de php también se nota mucho y mejora mucho el rendimiento (más velocidad y bajan las cargas). PHP 5 ya viene con el opcaché por defecto, pero para PHP 4 te recomiendo APC (Alternative PHP Cache)
También optimizar el MySQL obtienes grandes beneficios. Tienes que analizas las consultas lentas, cuál es el ratio de lectura/escritura, aumentar la caché, buffers, uso de índices, etc.
También es verdad que el apache consume muchos recursos comparado con ngnix. En el foro pusimos Apache con page_speed (de Google) y consumía muchos recursos (sobre todo CPU) y eso que era un Dual Xeon (8 Cores).
A parte de eso, pues una cpu rápida, memoria ram y discos duros (ssd) rápidos suelen dar muy buen rendimiento para un servidor web.
El problema que veo es que se usa plesk como panel de control, entonces toda configuración que haga, o puede corromper los ficheros de configuración, o la próxima vez que se haga un cambio borrará las líneas que yo he puesto, etc.
El cliente me dio el servidor para administrarlo y es que plesk me pone mas zancadillas que ayudarme. Si quiero instalar un módulo de apache por ejmplo o usar nginx en vez de apache, habrán más problemas que si no existiera plesk, que genera archivos y es un estorbo.
La versión de PHP instalada es la 5.4 o 5.5, no recuerdo bien, y hay más líos porque han hecho un cacao los del hosting y lo de plesk, que otra cosa.
Por ejemplo tiene 8 GB de RAM, hay visitas a la web pero no mucho y están ocupados más de 7GB, menuda burrada.
Por ejemplo hay 4 procesos así ahora mismo:
Citar1948 apache 20 0 328m 12m 2076 S 0.7 0.2 0:25.43 httpd
Citartop - 16:44:08 up XXX days, XX:XX, 1 user, load average: 0.84, 1.11, 1.18
Tasks: 191 total, 2 running, 189 sleeping, 0 stopped, 0 zombie
Cpu(s): 27.7%us, 3.2%sy, 0.0%ni, 68.8%id, 0.1%wa, 0.0%hi, 0.2%si, 0.0%st
Mem: 8158432k total, 7639320k used, 519112k free, 1034472k buffers
Swap: 2104508k total, 79384k used, 2025124k free, 5537940k cached
El problema que veo es eso, problemas de RAM: (abajo, procesos que más consumen)
Citar[root@XXXXXXXXX]# ps aux --width 30 --sort -rss | head
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
mysql 21373 120 0.7 1166920 58456 ? Sl 10:42 439:20 /usr/libexec/mysqld --bas
root 21493 0.0 0.2 335764 19600 ? Ss 10:42 0:00 /usr/sbin/httpd
10000 23503 0.3 0.2 169512 19472 ? SLs 11:01 1:14 proftpd: gmd4994933 - 83.
10000 7358 10.1 0.1 190868 14700 ? S 16:45 0:05 /usr/bin/php-cgi -c /var/
10000 7413 6.7 0.1 190628 14284 ? S 16:45 0:02 /usr/bin/php-cgi -c /var/
10000 7351 7.8 0.1 189456 13760 ? S 16:45 0:04 /usr/bin/php-cgi -c /var/
apache 1999 0.1 0.1 337704 13728 ? S 12:06 0:25 /usr/sbin/httpd
apache 23131 0.1 0.1 337500 13660 ? S 10:57 0:31 /usr/sbin/httpd
apache 1959 0.1 0.1 337428 13652 ? S 12:06 0:26 /usr/sbin/httpd
¿De cuantas visitas estamos hablando?
Yo hace mucho que lo que quiero probar es poner a nginx adelante para servir documentos estaticos (imagenes, css, js, html, etc) y usarlo como proxy para contenido dinamico (a apache).
https://www.digitalocean.com/community/tutorials/how-to-configure-nginx-as-a-reverse-proxy-for-apache
Lo mejor de los dos mundos.
Cita de: MinusFour en 17 Noviembre 2014, 17:31 PM
¿De cuantas visitas estamos hablando?
Yo hace mucho que lo que quiero probar es poner a nginx adelante para servir documentos estaticos (imagenes, css, js, html, etc) y usarlo como proxy para contenido dinamico (a apache).
https://www.digitalocean.com/community/tutorials/how-to-configure-nginx-as-a-reverse-proxy-for-apache
Lo mejor de los dos mundos.
Posiblemente 2000 al día.
Salu2
PD: tengo configurado nginx como proxy inverso.
CitarPosiblemente 2000 al día.
Eso no es nada! Para tu server deberia aguantar perfectamente.. Me da a mi que tienes mal configuradas las cosas xD
¿ El my.ini (de MySQL) como esta ? ¿ el httpd la config del mpm ?
PD: ¿ No tienes acceso SSH ?
Saludos
Cita de: ccrunch en 17 Noviembre 2014, 17:34 PM
Posiblemente 2000 al día.
Salu2
PD: tengo configurado nginx como proxy inverso.
¿2000 al dia o concurrentes?
Yo veo apache en la lista de procesos, pero no veo ningun proceso de nginx?
Cita de: MinusFour en 17 Noviembre 2014, 17:41 PM
¿2000 al dia o concurrentes?
Yo veo apache en la lista de procesos, pero no veo ningun proceso de nginx?
Al día, no concurrentes, de momento. nginx aparece a veces, pero apache es el que más.
Algo me llama la atención:
Citar
Tasks: 191 total, 2 running, 189 sleeping, 0 stopped, 0 zombie
¿189 procesos durmiendo?
Vas a tener que revisar el estado de tus procesos de apache, ¿Tienes mod_status?
apache2ctl status
# apachectl status
Cita de: MinusFour en 17 Noviembre 2014, 17:58 PM
Algo me llama la atención:
¿189 procesos durmiendo?
Vas a tener que revisar el estado de tus procesos de apache, ¿Tienes mod_status?
apache2ctl status
# apachectl status
En centos (no debian) cuando pongo eso sale:
The 'links' package is required for this functionality.
Cita de: ccrunch en 17 Noviembre 2014, 18:47 PM
En centos (no debian) cuando pongo eso sale:
The 'links' package is required for this functionality.
Pues instala el paquete:
yum install links
Por cierto, si tienes activado el modulo correctamente, deberías poder verlo desde
http://127.0.0.1/server-status
Habilita el server-status del apache
Las cargas tampoco son tan altas, deberían bajar de 1, pero no debería ser mayor problema.
Es normal que el mysql consuma mucha memoria ram o varios procesos del apache también es "normal".
Usar un panel de control como plesk tienes sus ventajas, como fácilidad de uso, pero también el iconveniente que comentas, te tienes que adpatar al software y versiones soportadas.
2.000 al día son pocas visitas, ¿Tamaño aproximado de la base de datos MysQL? ¿CMS utilizado?
Si usas Wodpress o parecidos debería mirar plugins del estilo: W3 Total Cache
Pues mirar el plugin Debug Objects para mirar el motivo por el que tarda tanto en cargar el index que me tiene muy mosca la verdad.
También he añadido W3 Total Cache, para que el WP vaya más rápido.
Si tiene instalado el APC (Alternative PHP Cache) (igual que el foro de elhacker.net con SMF) pero el WP no lo hace servir no sirve de nada.
Añadiir los módulos del apache --> deflate, expires y header (más rewrite)
Cita de: el-brujo en 17 Noviembre 2014, 19:30 PM
Habilita el server-status del apache
Las cargas tampoco son tan altas, deberían bajar de 1, pero no debería ser mayor problema.
Es normal que el mysql consuma mucha memoria ram o varios procesos del apache también es "normal".
Usar un panel de control como plesk tienes sus ventajas, como fácilidad de uso, pero también el iconveniente que comentas, te tienes que adpatar al software y versiones soportadas.
2.000 al día son pocas visitas, ¿Tamaño aproximado de la base de datos MysQL? ¿CMS utilizado?
Si usas Wodpress o parecidos debería mirar plugins del estilo: W3 Total Cache
Pues mirar el plugin Debug Objects para mirar el motivo por el que tarda tanto en cargar el index que me tiene muy mosca la verdad.
También he añadido W3 Total Cache, para que el WP vaya más rápido.
Si tiene instalado el APC (Alternative PHP Cache) (igual que el foro de elhacker.net con SMF) pero el WP no lo hace servir no sirve de nada.
Añadiir los módulos del apache --> deflate, expires y header (más rewrite)
Hola!
El tamaño de la BD exacto no lo sé exactamente pero debe estar por 200MB o por ahí. No hay CMS, es programado desde 0.
Y el problema de los módulos del apache es... plesk :xD
No me da la opción de añadir módulos, a no ser que los añada yo a mano, y ha creado tantos ficheros como le ha dado la gana. Para un sitio web, está el fichero de configuración de apache (servidor) luego en otras 99999999 carpetas hay ficheros httpd.conf y todo eso, a mi sí que me tiene mosca :xD
Yo si los instalo y activo a mano la próxima vez que se haga un cambio en plesk lo sobreescribirá y mi trabajo se irá al traste :xD
Por no decir que ese servidor no se puede caer ni un segundo así que no puedo permitirme el lujo de "probar" o instalar módulos y que luego haya conflictos con plesk.
Gracias!
Yo le voy a que sean tus querys. Puedes mirar los archivos PHP? Podrías poner alguno dónde se hagan sentencias SQL?