У меня была довольно неприятная проблема с веб-сайтом, над которым я работаю, и мне трудно сказать, связана ли проблема с PHP, Apache или MySQL.
Настройка системы: облачное решение (перенесенное с выделенных серверов в прошлом году) с двумя виртуальными машинами: Apache VM и MySQL VM. Виртуальная машина Apache имеет 1 ядро (2 ГГц), 4 ГБ ОЗУ, виртуальная машина MySQL имеет два одинаковых ядра, 8 ГБ ОЗУ. Сайт не получает большого объема трафика из-за своей природы.
Проблема: при просмотре отчета по аккаунту иногда время ожидания страницы истекает и не загружается. На странице выполняется множество запросов и возвращается довольно много данных (в основном текст, все еще <1 МБ), поэтому моей первой мыслью была проблема с MySQL. Я наблюдал за сервером во время этих тайм-аутов, и ничего не выделялось. Я также выполнял изолированные запросы (как напрямую к БД, так и через тестовую страницу), и они выполняются довольно быстро.
Apache также не показывает ничего необычного, и я никогда не получаю таймаутов PHP или ошибок памяти. Я также запускал это в локальных системах, не испытывая той же проблемы (хотя эти системы, очевидно, не имеют конкуренции, в отличие от live box.
Самое странное, что когда у меня возникает эта проблема в одном браузере (скажем, Firefox), я не могу загружать никакие другие страницы сайта через Firefox, но могу через другой браузер (скажем, Chrome). Это предполагает, что есть какая-то проблема с подключением или очередью с сервером и этим сеансом?
Может ли кто-нибудь дать мне представление о том, что, по их мнению, могло вызвать нечто подобное? Или я могу дать вам дополнительную информацию?
Спасибо
Взгляните на New Relic newrelic.com. Это сделано специально для этого. При регистрации вы получаете бесплатную пробную версию Pro (150 долларов за сервер). Это позволяет вам контролировать mysql, php, apache и всю систему. Он показывает вам графики и другие полезные функции, которые можно использовать при отладке системы. Он может показать узкие места в вашем приложении.
Я использую его на нескольких своих серверах, и он отлично работает для мониторинга производительности каждого из них.
Здесь несколько вещей, которые идут не так, и, возможно, несколько причин, не в последнюю очередь из-за производительности.
Обвинение PHP, MySQL и Apache - не очень конструктивный подход к проблеме.
Apache также не показывает ничего необычного, и я никогда не получаю таймаутов PHP или ошибок памяти.
какой делает Показывать Apache для этих запросов? Вы подтвердили, что PHP регистрирует ошибки? А как насчет ведения журнала вашего приложения?
когда у меня возникает эта проблема в одном браузере (скажем, Firefox), я не могу загружать другие страницы сайта через Firefox, но могу через другой браузер (скажем, Chrome).
Вы не предоставили никаких подробностей о том, что происходит в браузере / сети. Вы только продемонстрировали это с ошибкой Firefox и успехом Chrome? Если да, то пробовали ли вы включить SPDY в Firefox? Вы пробовали отслеживать запрос с помощью монитора пакетов, чтобы увидеть, на каком конце соединение закрывается / как закрывается соединение?
Две вещи, которые стоит попробовать.
Сначала включите и следите за журналом медленных запросов mysql. В этом примере устанавливается время медленного запроса 5 секунд, вы можете поиграть с этим, пока не получите полезную информацию. Обычно это /etc/my.cnf со строками под [mysqld]:
log_slow_queries = /var/log/mysql-slow.log
long_query_time = 5
log-queries-not-using-indexes
Затем, когда вы столкнетесь с проблемой в firefox, очистите кеш. Если вы используете Chrome, попробуйте провести тестирование в окне инкогнито и посмотрите, имеет ли это значение.