OVH Community, your new community space.

Cuelgue Apache y MySQL


Jove
23/08/2013, 17:11
Hola,
Gracias por vuestras respuestas.
Después de mucho mirar, parece que a ciertas horas tenía un ataque DDOS.
He instalado el modulo mod_evasive en apache y parece que aguanta ahora perfectamente.
Gracias nuevamente

pepejlr
14/08/2013, 16:30
Basicamente tu problema es que tienes un sitio web con un archivo o script en PHP mal depurado que cuando se ejecuta se come todos los recursos del servidor hasta que te quedas sin memoria y Linux dice basta y empieza a cerrar servicios como es en tu caso MySQL. Da igual si usas Plesk o cualquier gestor o simplemente tienes Apache+PHP instalado a manopla en consola.

Deberás monitorizar con el navegador de consola lynx acudiendo en él a http://localhost/server-status. Ahi te pone detallado el consumo de cada virtualhost. Es aconsejable que lo hagas cuando Apache empieza a comer los recursos para saber exactamente su origen.

Esto ya me ha pasado y limitar la RAM solo lo puedes hacer con un script en bash. ¿Mi solución? Un script en el que cuando llega a X carga por minuto, pare apache durante unos minutos y luego se vuelva a ejecutar. El problema es que te para el servidor web unos minutos pero al menos no se lleva por delante el resto de procesos del servidor, con lo que deberias dar con el origen del problema como te he explicado más arriba.

gomhermar
14/08/2013, 00:55
Revisa bien todos los logs, al menos te indicaran por donde seguir mirando. Si es siempre a la misma hora revisa, como dice un compañero, que no tengas un cronjob.

Un saludo

maxpaynecu
13/08/2013, 15:28
si te pasa a una xxx diariamente específica busca en tus logs debe haber algún cronjob programado a esa hora que te esta crasheando el server men

Jove
13/08/2013, 14:10
Muchas gracias por vuestras respuestas,
Shelmark, no tengo plesk. Es gentoo. Pero lo tendré en cuenta para el futuro. Muchas gracias!

Pego la configuración abreviada de apache


PidFile logs/httpd.pid


#
# Timeout: The number of seconds before receives and sends time out.
#
# Timeout 30
Timeout 10
#
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
#
KeepAlive Off

#
# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.
#
MaxKeepAliveRequests 100

#
# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.
#
KeepAliveTimeout 3

##
## Server-Pool Size Regulation (MPM specific)
##

# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves

StartServers 5
MinSpareServers 5
MaxSpareServers 15
ServerLimit 100
MaxClients 100
MaxRequestsPerChild 4000



# worker MPM
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
#
# StartServers 10
# MaxClients 150
# MinSpareThreads 25
# MaxSpareThreads 75
# ThreadsPerChild 25
# MaxRequestsPerChild 0
#


# perchild MPM
# NumServers: constant number of server processes
# StartThreads: initial number of worker threads in each server process
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# MaxThreadsPerChild: maximum number of worker threads in each server process
# MaxRequestsPerChild: maximum number of connections per server process

NumServers 5
StartThreads 5
MinSpareThreads 5
MaxSpareThreads 10
MaxThreadsPerChild 20
MaxRequestsPerChild 0


rootnovato
13/08/2013, 13:58
Cita Publicado inicialmente por Jove
Gracias por la respuesta.
Sí, he mirado los logs y no veo nada raro.
Gracias de nuevo.
Pues si no das más información poco te vamos a poder ayudar.

En cualquier caso, limitar la RAM que usa un proceso se podría hacer con un script bash supongo. Yo he visto alguno para reiniciar servicios si se llega a cierto porcentaje de CPU, supongo que lo mismo se podría hacer con la RAM.

Busca en Google seguro que encuentras algo hecho ya.

Shelmak
13/08/2013, 13:05
No se si tendra que ver o no pero ¿Utilizas Plesk? Y si es asi tu kernel tiene parche grsec?

Quiza no tenga que ver pero yo tuve muchos problemas con el grsec y el plesk por una incompatibilidad con el kernel con grsec, el plesk loqueaba y comenzaba a abrir miles de procesos de apache y como solucion chapuza reiniciaba el apache y se arreglaba por un tiempo (Hasta que al fin descubri la incompatibilidad)

No tengas muy en cuenta lo que te digo, pues no se si sera tu caso o no tiene relacion alguna con tu tema pero por si acaso no pierdes nada en comprobar si utilizas las dos cosas (plesk y kernel con grsec) de forma conjunta.

Jove
13/08/2013, 12:28
Cita Publicado inicialmente por rootnovato
Quizás te convendría más averigurar la causa de que Apache se coma toda la memoria no?

Has mirados los logs de Apache para ver por qué ese incremento en el consumo por la noche?
Gracias por la respuesta.
Sí, he mirado los logs y no veo nada raro.
Gracias de nuevo.

rootnovato
13/08/2013, 11:15
Quizás te convendría más averigurar la causa de que Apache se coma toda la memoria no?

Has mirados los logs de Apache para ver por qué ese incremento en el consumo por la noche?

Jove
13/08/2013, 10:26
Buenas,
Lo primero agradeceros cualquier ayuda.
Tengo un problema cada noche con mi servidor dedicado de 4Gb de RAM.
En uso normal tiene unos 2Gb de memoria RAM libre. Pero por las noches, apache se come la memoria y hace parar MySQL.
Tiene la distribución Release 2.
¿Se puede limitar el uso de memoria de Apache? He intentado tocar todos los parámetros que he encontrado en los post del foro pero no lo soluciono.
Muchas gracias!!!