Страница 1 из 1
Проблемы с MySQL
Добавлено: 2010-08-25 11:00:36
barut
В общем беда какая-то и не знаю откуда у нее ноги растут.
В общем, суть в следующем:
При запросе страницы апачем, идет обращение к MySQL. Переодически (понять не могу в какой момент) сервер не может отдать содержимое ответа. Делаю:
И в столбце
Status идет сообщение
Sending Data для всех потоков. Все! На этом треды висят. Пока вручную не покиляешь их, они так и будут висеть.
Если я правильно понимаю, то MySQL начинает ждать, пока Апач совместно с PHP заберут у него данные.
Да еще такой момент. Когда убиваешь процесс апача, то поток так и продолжает висеть. А вот если убить поток в MySQL, тогда процесс апача вешается наглухо, и через топ у него постоянно висит статус
RUN
Подскажите, кто знает как диагностировать траблу. Или может это вообще беда на MySQL, а связки Apache+PHP
Re: Проблемы с MySQL
Добавлено: 2010-08-25 11:08:05
barut
Да. Чуть не забыл. Стоит Mysql 5.1.48, Apache/2.2.10(mpm-itk) и PHP-5.2.13.
PHP скрипты подключаются к MySQL через unix-сокет
Re: Проблемы с MySQL
Добавлено: 2010-08-25 11:52:13
masterito
show full processlist;
А потом для проблемного запроса делаете explain - судя по всему запрос кривой у Вас, слишком много информации из базы выбирает.
Re: Проблемы с MySQL
Добавлено: 2010-08-25 13:58:53
barut
Я же пишу, что проблема носит переодический характер.
Т.е. тот же самый запрос шустро отрабатывает.
Другое дело, что в определенный момент, когда идут одновременные запросы к сайту, то MySQL просто ложится, а у тредов статус, что они все дружно посылают данные.
Re: Проблемы с MySQL
Добавлено: 2010-08-25 14:07:23
masterito
Сомневаюсь, что если запрос выбирает 50 строк он будет долго данные посылать, а вот если идет выборка 10 тысяч строк, да таких выборок 10-20,
нагрузку это может создать немаленькую. Приведите вывод explain этого запроса.
Re: Проблемы с MySQL
Добавлено: 2010-08-25 16:22:34
barut
Код: Выделить всё
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE n ref PRIMARY,user_f_2 user_f_2 2 const 17432 Using where; Using filesort
1 SIMPLE v eq_ref vr_el_id vr_el_id 771 const,inform_c.n.n_id 1
1 SIMPLE l ref link_el_id,link_cat_id link_el_id 4 inform_c.n.n_id 1 Using where
Это вывод EXPLAIN
Правда не совсем понимаю чего с ним делать. Базы и запросы клиентские. Говорят раньше все было ништяк. А теперь такая вот загогулина.
Может где-то надо в MySQL что-нибудь подкрутить?
Re: Проблемы с MySQL
Добавлено: 2010-08-25 17:06:04
masterito
Может и надо - но запрос кривой.
Берем в руки калькулятор(поскольку выборка идет из 3-х таблиц, то количество столбцов нужно перемножать):
17432*771*4
53 760 288
53 милиона строк - неслабая такая выборка... Особенно если их несколько будет одновременно.
Раньше возможно нагрузка была не такая высокая, а сейчас она возросла и количество запросов увеличилось.
Можете конечно дать MySQL больше ресурсов, но с такими выборками вам их никогда не хватит - нужно запрос оптимизировать.
Re: Проблемы с MySQL
Добавлено: 2010-08-25 17:53:03
barut
Плачевно
Будем думать, будем курить.
Т.е. получается сколько ресурсов не выделяй их все равно не хватит

А что можно подкрутить чтобы хотя бы затупов не было?
Re: Проблемы с MySQL
Добавлено: 2010-08-25 17:57:58
masterito
Кеши побольше дайте - по умолчанию они совсем маленькие.
Можно конечно добиться приемлемого результата и с текущими запросами, но это юудет уже не борьба с проблемой, а с ее последствиями.
Иногда запрос можно серьезно оптимизировать, создав пару дополнительных индексов, а иногда нужно переделывать структуру базы данных.
Re: Проблемы с MySQL
Добавлено: 2010-09-29 13:48:23
nixnix
вопрос от начинающего, подскажите.
ввожу команду mysql -u posifix -p
появляется пустая строка с вот таким началом mysql>
далее ввожу show tables
в ответ получаю >
и всё пусто.
Базы с таблицами существуют, через phpmyadmin захожу, всё на месте.
Но почему пусто, не пойму.
Re: Проблемы с MySQL
Добавлено: 2010-09-29 21:46:20
FiL
ставьте ; в конце запроса.
Re: Проблемы с MySQL
Добавлено: 2010-09-30 10:36:00
nixnix
верно, спасибо помогло
