Столкнулся с проблемой когда под нагрузкой стала очень долго работать база данных. Стали копиться запросы, которые исполняются по 30-60 секунд. При этом если такие же запросы выполнять на копии базы на том же сервере рядом, то они выполняются очень быстро. Задрал уже все буферы на максимум. На прошлой неделе столкнулись с такой проблемой. Вылечилось увеличением join_buffer_size до 32M. Сейчас вот опять началось и данная настройка уже не помогает.
У нас тоже самое на проекте - это компонент catalog.items выдает такой запрос.
Поступил плохо(НЕЛЬЗЯ ТАК ДЕЛАТЬ, но помогает) - на время акций, когда народу много набегает, повесил на крон, включаю скрипт kill для запросов время, которых более 20 сек. Зависает именно этот запрос с разницей только в наличии/отсутсвии фильтра. Пока народу мало, запрос выполняется быстро, но как только люди пошли в какой-то момент происходит зависание одно такого запроса и следом все последующие ждут в очереди.
Алексей Волков написал: У нас тоже самое на проекте - это компонент catalog.items выдает такой запрос.
Сожалею, но в продукте нет компонента catalog.items. Есть - catalog.item. В нем нет обращений к базе - это компонент отрисовки элемента. Если в режиме отладки вы видите запросы именно в нем - анализируйте result_modifier.php кастомизированного шаблона.
Не надо сверлить зубы через задний проход дрелью от Сваровски
А что если попробовать EXPLAIN сделать с этим запросом и посмотреть, может индексы не используются. А еще когда все это начинается, Вы как смотрите запросы, с помощью запроса SHOW FULL PROCESSLIST? Там еще есть поле State, в которое пишется в какой стадии находится запрос, может происходит взаимная блокировка - например тип таблицы myisam и с таблицы читают и и обновляют ее одновременно.
Александр Зверев написал: А еще когда все это начинается, Вы как смотрите запросы, с помощью запроса SHOW FULL PROCESSLIST? Там еще есть поле State, в которое пишется в какой стадии находится запрос, может происходит взаимная блокировка - например тип таблицы myisam и с таблицы читают и и обновляют ее одновременно.