
Disculpas por la naturaleza de novato de esta pregunta. Soy desarrollador web, aunque no tengo mucha experiencia en el mantenimiento de servidores ni en la depuración y solución de problemas de rendimiento.
Tengo un sitio Moodle (Moodle 2.2.3) ejecutándose en un servidor Apache (pila LAMP) que utiliza una base de datos MySQL.
Recientemente, cuando ciertos usuarios intentan iniciar sesión, han informado de un tiempo de espera; simplemente ven una página en blanco después de un tiempo determinado. Algunos usuarios pueden iniciar sesión bien. Esto parece estar determinado por los cursos en los que está inscrito el usuario. Un usuario administrador sin cursos, por ejemplo, puede iniciar sesión bien.
Pude extender el valor de tiempo de espera en php.ini de 60 segundos a 120 segundos y ver el mismo comportamiento. Usando $top puedo ver que la CPU utilizada por www-data aumenta alrededor del 99% hasta que se activa el tiempo de espera.
Supongo que se está realizando una llamada larga a la base de datos, o algo similar.
¿Cómo puedo ver los mensajes de error registrados por mysql? ¿Cómo puedo ver los mensajes de error registrados por PHP? ¿El error_log predeterminado (/var/log/php.log) que está definido en mi php.ini no parece estar allí? ¿Cómo puedo hacer que PHP registre errores en este archivo para poder ver qué está sucediendo?
Moodle también registra errores en logs/error.log pero esto no arroja ninguna luz sobre las cosas.
Todas y cada una de las buenas sugerencias son bienvenidas, ¡gracias!
Respuesta1
Hicimos muchas optimizaciones del rendimiento de Moodle donde solía trabajar y usamos el perfil PHP Xdebug para ayudar con muchas de ellas. Al habilitar la creación de perfiles, se producirá un archivo *.cachegrind que luego será legible por muchos lectores: yo uso QCacheGrind en Windows o KCacheGrind en Linux. Entonces deberías poder identificar la función que está tomando su tiempo.
Desde la memoria, probablemente sea la cantidad de datos del curso que intenta cargar cuando el usuario inicia sesión. Si hay demasiados datos y está tomando todos los datos del servidor SQL en lugar de solo los necesarios, esto podría ralentizar las cosas. baja bastante. Esto también se puede identificar utilizando el registro lento como se menciona en un comentario anterior, siempre que sea la consulta SQL la que esté causando el problema de rendimiento.
Definitivamente también recomendaría actualizar su instancia de Moodle a algo más nuevo, ya que sé que hubo muchas correcciones de rendimiento enviadas al repositorio ascendente desde Moodle 2.2.3. Solíamos enviarlos a Moodle como socio oficial de Moodle.