2009-06-06 2 views
1

Наш сайт с относительно высоким трафиком просто замолчал, и мы полностью в тупике. Мы работаем на Django и Mysql (InnoDB), и мы пытаемся понять, почему все это внезапно совсем медленно.Помощь! Почему MySql просто закричал?

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

+0

Возможно, у вас заканчивается память. –

+0

Да, вы проверили дисковое пространство, проблемы с памятью и т. Д.? – mikl

ответ

4

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

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

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

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

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

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

+0

+1 Индексы звучат как очень вероятная причина. –

0

Являются ли «сервер mysql» и «сервер приложений» в одном окне и разговаривают с тем же экземпляром DB?

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

После того, как вы сделали, что вы должны быть немного более конкретно о проблеме - были времена пинг же, вы используете один и тот же запрос, и т.д ...

1

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

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

+0

Ах да, это знаменитый старый. Это было ужасно лет назад. – joedevon

+0

Хотелось также прослушивать для потомков: Это критическая настройка для отключения в средах с высокой пропускной способностью. –

Смежные вопросы