@bysobi

Почему база данных mysql иногда висит?

Боюсь что задаю очень глупый вопрос, и даже обьяснить его не смогу.
Дано: экспорт продуктов в xml файл. Выполняется один запрос, примерно за 4-5 секунд. Выгружаются товары(50 тыс) в массив. Далее массив разбиваю и работаю с ним(строю xml) и отдаю пользователю на скачивание. В цикле происходит 5-6 моментальных запросов, это важно.
Цикл строит xml 10-15 секунд и кушает 500 мб памяти.
Это все происходит быстро, если на сервере не много пользователей. Наверное из-за них. Не уверен. Описываю дальше.
Частенько выполнение скрипта происходит по 5-8 минут. Не могу понять почему.
Хотя вот сейчас, ночью, когда юзеров почти нет и использование оперативной памяти не происходит - скрипт выгружал xml минут 5. После этого сразу же выполняю его повторно и что мы видим - выгружается за пару секунд. Как? Почему так происходит? Как отладить и понять в чем дело? Дело в php?
То есть, проблема в том, что я не могу понять, почему скрипт выполняется долго, когда много юзеров и они все нагружают сайт, хотя использование оперативной памяти 1600/4000 мб.
  • Вопрос задан
  • 398 просмотров
Пригласить эксперта
Ответы на вопрос 2
DarkRaven
@DarkRaven
разработка программного обеспечения
Без предоставления конфигурации БД, что там у вас, какие настройки, что за тип движка хранилища, какие диски и что еще рядом крутится - это взывание к телепатам.

На быстродействие БД может повлиять все из вышеперечисленных.

Есть ли настройка в конфигурации БД, чтобы она логировала медленные запросы?
Что говорит EXPLAIN по данному запросу?
Возможна ли ситуация, когда данный запрос выполняется разными пользователями?
Сколько подключений разрешено к БД?
Ответ написан
Комментировать
rim89
@rim89
программист-велосипедист
1. надо смотреть сам запрос
2.
В цикле происходит 5-6 моментальных запросов, это важно.

запросы выстраиваются в очередь и выполняются по очереди, если ваш подзапрос использует таблицу в которой что то изменяется, то он будет ждать пока предыдущий запрос ее изменит
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы