Назад | Перейти на главную страницу

Производительность сайта PHP + MYSQL

Мне нужно управлять сайтом, который был разработан не мной. Он находится в PHP с использованием базы данных mysql, которая находится на веб-сервере. Сайт иногда (когда количество посетителей слишком увеличивается) перестает отвечать или реагирует слишком медленно.

Я разработал несколько сайтов на PHP, но никогда не заботился об управлении, поэтому действительно не знаю, с чего начать. Сервер (сложный) кажется в порядке, когда Интернет перестает отвечать, процессор используется примерно на 55% и имеет много памяти.

Я не прошу кого-то решать эту проблему. Мне бы очень хотелось, чтобы кто-нибудь дал мне несколько советов о том, где я могу найти журналы, и как мне их читать и интерпретировать. Таким образом, я мог бы узнать, какой это сетевой трафик, база данных (какие запросы) или что-то еще.

Спасибо!

Обновить: Забыл сказать: это Windows Server 2003.

Примечание: Я записал около дня с Jet Profiler. Я не совсем понимаю всю информацию, которую он предоставляет, но есть один запрос, который он отмечает как очень медленный. Это имеет смысл, потому что это select с предложением where, которое имеет три подобных условия. Изначально я не включил это в свой вопрос, потому что когда я запускаю запрос из MySQL Query Browser, это не занимает много времени. Это меньше 0,01 секунды.

У меня были аналогичные проблемы с веб-сайтом, который я использовал, написанным на PHP с отдельным сервером, на котором запущен mysql. Мне удалось использовать Jmeter и удобный плагин, который предоставит вам диаграмму состояния ваших серверов на основе графиков: code.google.com/p/jmeter-plugins/wiki/PerfMon#Installation

Это действительно может помочь вам диагностировать проблему, так как вы сможете смоделировать другое количество пользователей. Кстати, я смог использовать плагин APC для PHP, который оптимизировал код. Просто мысль :-)

Обычно это база данных, которая замедляет работу сайта. Скорее всего, у вас есть несколько запросов, которые плохо написаны / не проиндексированы и являются причиной замедления. В MySQL вы можете найти запросы, на которые требуется слишком много времени для ответа, включив Журнал медленных запросов.

Обычно это включает в себя следующие шаги: 1. Создайте файл с именем что-то вроде slowqueries.log в папке журнала MySQL, обычно /var/log/mysql/. Измените его разрешения для пользователя mysql, используя chmod (при условии, что вы работаете в Linux). 2. Войдите в мой sql как root и выполните следующие запросы: set GLOBAL slow_query_log_file='/var/log/mysql/slowqueries.log'; -- sets the log file SET GLOBAL slow_query_log=1; -- turns on slow query logging

Как только вы определите запросы, выполнение которых занимает слишком много времени, вы можете использовать ОБЪЯСНИТЕ или ОБЪЯСНЕНИЕ РАСШИРЕННО чтобы проанализировать их и посмотреть, как их можно оптимизировать, обычно путем добавления индексов / улучшения объединений.

Проверьте запросы MySQL, если у вас есть доступ к панели на вашем сервере, посмотрите, что происходит. Неоптимизированные запросы sql могут вывести ваш сервер из строя (случилось со мной). Вы должны начать с этого, должно быть что-то, что недостаточно оптимизировано и замедляет его, или ваш сервер не работает должным образом.