Moodle colapsa un servidor

Moodle colapsa un servidor

de Juenlis Coss -
Número de respuestas: 6
Hola:
Tengo un moodle 1.5.3+ dando servicio a una comunidad de universitarios de un poco mas de 10 mil usuarios. Dicho moodle esta instalado sobre un servidor profesional de 4 gb de ram y dos micros a 2.8 Ghz cada uno, con sistema operativo Debian 2.6.8-3-686-smp que tiene apache2 + php 4.3.10-16 y mysql 4.0.24.
Este último viernes se hizo por primera vez una prueba de ingenieria del software usando el modulo QUIZ, en la cual participaron 1017 usuarios, y el servidor no aguanto la carga.
Se puso super lento, empezó a rechazar conexiones, las paginas no habrian, y las que lo hacian no cargaban ni los estilos ni las imagenes, por lo que tuvimos que mandar a salir a la mitad de los estudiantes de la plataforma para que bajara la carga.
Los ficheros de configuracion del apache y el mysql se los muestro a continuacion, para ver si puede haber sido algun problema en la configuracion de los mismos, y me puedan dar una posible solucion de por que pudo haber ocurrido este problema, pues en verdad para un servidor con esas caracteristicas creo debe haber aguantado esa carga.

APACHE

Timeout 30
KeepAlive Off
MaxKeepAliveRequests 50
KeepAliveTimeout 3

<IfModule prefork.c>
StartServers 16
MinSpareServers 16
MaxSpareServers 50
MaxClients 150
MaxRequestsPerChild 0
</IfModule>

<IfModule worker.c>
StartServers 16
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>

<VirtualHost *>
ServerAdmin juenlis@uci.cu
DocumentRoot /home/www/moodle
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>

<Directory /home/www/moodle>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

ErrorLog /var/log/apache2/error.log

LogLevel warn

CustomLog /var/log/apache2/access.log combined
ServerSignature On

</VirtualHost>

MYSQL

key_buffer = 150M
max_allowed_packet = 1M
sort_buffer_size = 4M
thread_stack = 128K

#NUEVO
join_buffer = 1M

query_cache_limit = 1M
query_cache_size = 64M
query_cache_type = 1

#NUEVO
max_connections = 200
interactive_timeout = 100
wait_timeout = 60
connect_timeout = 10
thread_cache_size = 8
max_allowed_packet = 16M
table_cache = 256
record_buffer = 1M
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
key_buffer_size = 32M
max_connect_errors = 10
thread_concurrency = 4
myisam_sort_buffer_size = 64M
server-id = 1

#NUEVO
sort_buffer = 64M
read_buffer = 16M
write_buffer = 16M


El servidor tambien tiene instalado el zend_optimizer.

Espero su colaboracion
Gracias de antemano,
Juenlis
Promedio de valoraciones: -
En respuesta a Juenlis Coss

Re: Moodle colapsa un servidor

de Israel Forés -
Hola Juenlis,

bueno pues sinceramente no puedo ayudarte mucho, lo que si puedo es aconsejarte que te pases por el curso using moodle donde hay un foro que trata de Hardware and Performance

Por otro lado, te aconsejaria que pensases implementar la siguiente arquitectura:

Un apache muy simple que se encargue de servir toda la parte estatica de moodle, mientras que otro que se dedicará a la parte dinámica (esta ya compilado con todas las librerias necesarias para moodle)

También me comentarón, aunque yo no lo he probado, que seria interesante que el primer apache (el simple) le añadieras el módulo de cache, que aceleraria aun mas el tiempo de respuesta.

Un saludo, y espero que te sirva
Israel
En respuesta a Israel Forés

Re: Moodle colapsa un servidor

de Juenlis Coss -
Gracias Israel por tu comentario, ahora como sería esto de un apache sirviendo las páginas estáticas y otro las dinámicas??. Estarían estos dos apaches en el mismo servidor o en máquinas diferentes. Otra cosa, a que te refieres con parte estática de moodle, a páginas html o algo por el estilo???
En respuesta a Juenlis Coss

Re: Moodle colapsa un servidor

de Israel Forés -
Hola Juenlis,

bueno para la idea es la siguiente:

Tener dos apaches corriendo en la misma maquina, pero uno escuchando en el puerto 80 (el normal) y otro p.e. en el puerto 8080. De tal forma que cuando llegue una peticion de contenido estatico al apache 'normal' se la pase al apache maś libiano, ya que este necesita menos recursos del sistema.

Para hacer esto yo miré las url's de moodle y vi que todas las imagenes se encuentran en una carpeta llamada 'pix'. Este seria, a mi entender, el contenido estático.

Ahora ya tienes una forma de filtrar las peticiones de contenido estático.


Peticion Cliente ----------> [APACHE:80 -si url sin 'pix'] -------------> Servir página
Peticion Cliente ----------> [APACHE:80 -si url con 'pix'] -------------> [APACHE:8080 ]

Necesitarias utilizar el redireccionamiento de moodle con el módulo proxy, y para el Apache en 8080 compilarlo con el módulo cache.

Espero que te serva para andar el camino big grin

Saludos
Israel


En respuesta a Israel Forés

Re: Moodle colapsa un servidor

de juan carlos monterrubio -
disculpa, cual es el modulo proxy y como lo configuro?,

es que ya tengo un servidor en mi red que funciona en el puerto 80 y por el momento solo tengo una conexion por lo que quisiera configurar el moodle por el puerto 8080.

Saludos
En respuesta a juan carlos monterrubio

Re: Moodle colapsa un servidor

de Juenlis Coss -
Juan, para lo que tu quieres hacer no hace falta usar el modulo proxy del moodle, sino que debes configurar tu apache para que escuche por el puerto 8080, lo que se hace de la siguiente forma.

[Apache 1.3.x]
Editas el fichero de configuración httpd.conf de tu apache y buscas la directiva
Port 80
y la cambias por
Port 8080

[Apache 2.x.x]
Editas el fichero de configuración apache2.conf de tu apache en windows y buscas la directiva
Listen 80
y la cambias por
Listen 8080

En caso de estar en linux buscas /etc/apache2/ports.conf
y cambias Listen 80 por Listen 8080


En respuesta a Juenlis Coss

Re: Moodle colapsa un servidor

de Carlos Agustín L. Avila -
Creo que debes aclarar que esto afecta a todo el servidor y si tiene hosts virtuales tambien seran afectados.

Juan Carlos menciona que ya tiene un servidor escuchando el puerto 80, lo que aclara es ¿si en ese mismo servidor tiene instalado Moodle? si es así es mejor que configure Apache para que Moodle se un virtual host.