Помогите! Почему MySql просто остановился? - PullRequest
1 голос
/ 06 июня 2009

Наш веб-сайт с относительно высоким трафиком просто остановился, и мы совершенно ошарашены. Мы работаем на Django и Mysql (InnoDB), и мы пытаемся выяснить, почему это вдруг совершенно медленно.

Вот что мы знаем до сих пор: На нашем сервере MySQL простой запрос (из оболочки django) выполняется быстро. На нашем сервере приложений простой запрос (из оболочки django) выполняется очень медленно.

Ответы [ 4 ]

4 голосов
/ 06 июня 2009

Не имея каких-либо подробностей о запросе или о таблицах, участвующих в запросе, довольно сложно ответить на этот вопрос.

Скорее всего, это связано с большим количеством данных в таблице и отсутствующим индексом в поле, к которому вы обращаетесь.

Это объяснило бы, почему это медленно на производственной коробке, но быстро на устройстве разработки (так как данных меньше).

Чтобы лучше ответить на вопрос, не могли бы вы предоставить нам более подробную информацию? Структура таблицы, запрос, количество строк в таблице и т. Д.?

Дополнительные предположения: Дисковый ввод-вывод на сервере приложений может быть проблемой, возможно, файлы журнала в MySql настроены неправильно (особенно с InnoDB, это может привести к проблеме). Может быть, слишком часто загружается запрос? Таблица блокируется, когда несколько пользователей записывают / читают из одних и тех же таблиц?

Как я уже сказал, без подробностей угадать довольно сложно. Но я надеюсь, что, по крайней мере, я мог бы указать вам правильное направление.

1 голос
/ 07 июня 2009

Спасибо всем за ответы.

Оказывается, это была проблема с DNS (регрессия). MySQL действительно глуп, потому что по умолчанию используется поиск DNS. Они стали очень медленными, что убило весь сетевой поток между сервером приложений и сервером БД. Это было так же просто, как добавить «skip-name-resolution» в наш my.cnf.

1 голос
/ 06 июня 2009

Запустите EXPLAIN на SELECT. Внимательно изучите эту страницу:

http://dev.mysql.com/doc/refman/5.0/en/using-explain.html

Понимание концепций на этой странице является ключевым для правильной индексации ваших таблиц.

0 голосов
/ 06 июня 2009

«Сервер MySQL» и «сервер приложений» находятся в одном и том же окне и общаются с одним и тем же экземпляром БД?

Ваш вопрос предполагает, что нет, поэтому я буду искать проблему в сети - начните с ping-сервера базы данных из каждого ящика и сравните результаты.

Как только вы это сделаете, вам нужно будет немного конкретнее разобраться с проблемой - были ли времена пинга одинаковыми, выполняете ли вы тот же запрос и т. Д ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...