извиняюсь за новичок в этом вопросе .. Я веб-разработчик, но не имею большого опыта в обслуживании серверов или отладке и исправлении проблем с производительностью.
У меня есть сайт Moodle (Moodle 2.2.3), работающий на сервере Apache (стек LAMP), который использует базу данных MySQL.
В последнее время, когда некоторые пользователи пытаются войти в систему, они сообщают о тайм-ауте - они просто видят пустую страницу через заданное время. Некоторые пользователи могут войти в систему нормально. Это, по-видимому, определяется тем, на какие курсы зарегистрирован пользователь. Например, пользователь с правами администратора, не имеющий курсов, может нормально войти в систему.
Мне удалось увеличить значение тайм-аута в php.ini с 60 до 120 секунд и увидеть такое же поведение. Используя $ top, я вижу, что процессор, используемый www-data, резко возрастает примерно на 99%, пока не истечет время ожидания.
Я предполагаю, что делается длинный вызов базы данных или что-то подобное.
Как я могу увидеть сообщения об ошибках, регистрируемые mysql? как я могу увидеть сообщения об ошибках, регистрируемые PHP? По умолчанию error_log (/var/log/php.log), который определен в моем php.ini, не существует? Как мне заставить PHP регистрировать ошибки в этом файле, чтобы я мог видеть, что происходит?
Moodle также записывает ошибки в logs / error.log, но это не проливает света на вещи.
Все хорошие предложения приветствуются - спасибо!
Мы много работали над оптимизацией производительности Moodle там, где я раньше работал, и использовали профилирование PHP Xdebug, чтобы помочь во многих из них. Включив профилирование, он создаст файл * .cachegrind, который затем будет доступен для чтения многими читателями - я использую QCacheGrind в Windows или KCacheGrind в Linux. Тогда вы сможете точно определить функцию, которая требует времени.
Из памяти, вероятно, это количество данных, которые он пытается загрузить, когда пользователь входит в систему. Если данных слишком много, и он захватывает все данные с SQL-сервера, а не только то, что необходимо, это может замедлить работу. вниз совсем немного. Это также можно определить с помощью журнала медленной работы, упомянутого в комментарии выше, при условии, что это SQL-запрос, вызывающий проблему с производительностью.
Я также определенно посоветовал бы обновить ваш экземпляр Moodle до чего-то более нового, так как я знаю, что после Moodle 2.2.3 в исходный репозиторий было внесено много исправлений производительности. Мы привыкли передавать их Moodle как официальному партнеру Moodle.