Недавно я перешел с учетной записи виртуального хостинга Dreamhost на VPS Linode 512 МБ. Переход был довольно плавным для нормальной повседневной работы моего сайта, но возникли некоторые проблемы с MySQL. Немного предыстории моей настройки, потому что я не уверен, связана ли проблема с MySQL или нет:
Проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда выполняется запрос, который не является частью нормальной работы сайта ... (это может быть что угодно, от оптимизации таблицы до выполнения SELECT COUNT и выполнения запроса на удаление для набора данных ) ... запрещает всему веб-серверу загружать какие-либо страницы. На всех страницах моего сайта есть вызовы базы данных, но страницы, которые не взаимодействуют с таблицей, над которой я работаю, по-прежнему не загружаются. Если вы попытаетесь посетить страницу во время выполнения одного из этих запросов, страница будет пытаться загрузиться примерно в течение минуты, прежде чем Nginx выдаст ошибку «502 Bad Gateway». Очевидно, это не такая большая проблема для запроса COUNT, который занимает менее 5 секунд, но оптимизация таблиц может вывести сайт из загрузки страниц на 5+ минут.
У нас есть скрипт, который запускается каждую ночь, он извлекает 100 000 лучших записей из нашей основной таблицы и сохраняет их в отдельной таблице для страницы рейтинга. На Dreamhost, когда этот скрипт выполнялся, страницы рейтинга нашего сайта были бы пустыми, но остальная часть сайта продолжала бы работать, однако на VPS ни одна страница сайта не загружалась, пока не будет выполнен ~ 6-минутный запрос.
Если какая-либо дополнительная информация поможет, дайте мне знать, и я буду рад предоставить. Я искал этот сайт, и Google без устали пытается найти кого-нибудь еще, кто сталкивался с подобной проблемой, но не может ничего найти. Вы, ребята, думаете, что это просто проблема MySQL, или это может быть вызвано моим Nginx? (на Dreamhost у меня был Apache).
Спасибо.
Подключитесь к вашему SQL-серверу и выполните запрос: «показать список процессов». Это покажет вам все запущенные запросы и их текущее состояние. Вы должны ожидать, что почти все они будут в состоянии ЗАБЛОКИРОВАНО, что означает, что они ждут завершения одного из других запросов. Те, которые не ЗАБЛОКИРОВАНЫ ваши кандидаты на роль виновника.