Acelerar apache (page_speed+varnish?)

Iniciado por ccrunch, 17 Noviembre 2014, 14:56 PM

0 Miembros y 2 Visitantes están viendo este tema.

ccrunch

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!

#!drvy

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

el-brujo

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.

ccrunch

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



MinusFour

¿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.

ccrunch

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.

#!drvy

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

MinusFour

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?

ccrunch

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.

MinusFour

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?

Código (bash) [Seleccionar]

apache2ctl status
# apachectl status