[Решено] Проблема с БД, завелся паразитный запрос.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
[Решено] Проблема с БД, завелся паразитный запрос.
Пару недель назад ВНЕЗАПНО (именно так, неожиданно), началась проблема с базой данных phpbb.
Варажалась проблема в высокой нагрузке на процессор и полной дисфункции форума через некоторое время.
Не было ни
- установки модов
- взрывного роста посещаемости
- фейлов хостинга (dedic VDS)
Какое-то время я воевал в одиночестве, смог купировать острую дисфункцию и вот что выяснил. Основную проблему, согласно "Процессам" phpmyAdmin, создает запрос
SELECT f.forum_id, f.forum_name, t.topic_title, t.topic_time, t.topic_replies, t.topic_view
(довольно безобидный, да?)
во время
"Copying to tmp table"
У меня был довольно большой запас по настройкам my.cnf, и я хорошо поигрался с этими настройками. Проблема высокой нагрузки осталась.
Прошу помощи сообщества. В чем дело?
Если есть профессионал, которому близка эта тема, я готов оплатить консультацию в ЛС.
Варажалась проблема в высокой нагрузке на процессор и полной дисфункции форума через некоторое время.
Не было ни
- установки модов
- взрывного роста посещаемости
- фейлов хостинга (dedic VDS)
Какое-то время я воевал в одиночестве, смог купировать острую дисфункцию и вот что выяснил. Основную проблему, согласно "Процессам" phpmyAdmin, создает запрос
SELECT f.forum_id, f.forum_name, t.topic_title, t.topic_time, t.topic_replies, t.topic_view
(довольно безобидный, да?)
во время
"Copying to tmp table"
У меня был довольно большой запас по настройкам my.cnf, и я хорошо поигрался с этими настройками. Проблема высокой нагрузки осталась.
Прошу помощи сообщества. В чем дело?
Если есть профессионал, которому близка эта тема, я готов оплатить консультацию в ЛС.
Последний раз редактировалось Crelby 01.01.2014 22:41, всего редактировалось 4 раза.
-
MIT
- Former team member
- Сообщения: 2500
- Стаж: 17 лет 6 месяцев
- Откуда: 56°20′02″ с. ш. 36°42′45″ в. д.
- Благодарил (а): 3 раза
- Поблагодарили: 351 раз
Re: Проблма с БД
Гугл рекомендует ознакомится с вот такой вот инструкцией: http://stackoverflow.com/questions/7532 ... disk-mysql
Покрути настройки.
Покрути настройки.
Re: Проблма с БД
Спасибо за внимание к моей теме, однако, чувствую, что придется живописать подробнее.
Итак.
Не далее как в ноябре форум работал идеально, просто летал на базовых настройках my.cnf. База данных уже тогда была довольно большая, 2.3 Gb в развернутом виде, в декабре она выросла не более чем на 100M.
После того, как проблема началась, я РАЗУМЕЕТСЯ залез в Гугль и нашарил там несколько советов по садоводству.
Вот один из них.
Я выкрутил tmp_table_size и max_heap_table_size с их дефолтного значения (не помню уже какого, но очень низкого) до 512M, 30% от всей памяти хостинга. Проблема несколько купировалась, но не ушла.
Из этого всего я сделал ВЫВОД. Проблема не в настройках Мускула или неподъемности БД, а в чем-то другом.
Я пошел наблюдать за запросами и обнаружил, что 99% заторов создает запрос:
SELECT f.forum_id, f.forum_name, t.topic_title, t.topic_time, t.topic_replies, t.topic_view
(в таком виде он показан в PROCESSLICT phpMyAdmin).
Я пытался найти этот запрос в исходниках phpBB, но не нашел. Есть похожие запросы, но точно такого нет.
ИТАК, вопросы ГУРУ-знатокам.
1. Что это за запрос? Где он используется, что делает? Как его локализовать?
2. Почему этот запрос создает такую большую таблицу, что ей не хватает места в памяти? Даже таблицы posts и поисковые индексы не создают проблем, а этот запрос создает!
Спасибо за внимание к деталям моего рассказа, очень жду помощи со стороны профессионалов.
Итак.
Не далее как в ноябре форум работал идеально, просто летал на базовых настройках my.cnf. База данных уже тогда была довольно большая, 2.3 Gb в развернутом виде, в декабре она выросла не более чем на 100M.
После того, как проблема началась, я РАЗУМЕЕТСЯ залез в Гугль и нашарил там несколько советов по садоводству.
Вот один из них.
Я выкрутил tmp_table_size и max_heap_table_size с их дефолтного значения (не помню уже какого, но очень низкого) до 512M, 30% от всей памяти хостинга. Проблема несколько купировалась, но не ушла.
Из этого всего я сделал ВЫВОД. Проблема не в настройках Мускула или неподъемности БД, а в чем-то другом.
Я пошел наблюдать за запросами и обнаружил, что 99% заторов создает запрос:
SELECT f.forum_id, f.forum_name, t.topic_title, t.topic_time, t.topic_replies, t.topic_view
(в таком виде он показан в PROCESSLICT phpMyAdmin).
Я пытался найти этот запрос в исходниках phpBB, но не нашел. Есть похожие запросы, но точно такого нет.
ИТАК, вопросы ГУРУ-знатокам.
1. Что это за запрос? Где он используется, что делает? Как его локализовать?
2. Почему этот запрос создает такую большую таблицу, что ей не хватает места в памяти? Даже таблицы posts и поисковые индексы не создают проблем, а этот запрос создает!
Спасибо за внимание к деталям моего рассказа, очень жду помощи со стороны профессионалов.
-
Ивансон
- phpBB 1.4.1
- Сообщения: 48
- Стаж: 16 лет
- Благодарил (а): 3 раза
Re: Проблема с БД (завелся паразитный запрос)
Александр, боюсь в канун нового года ответов будет не много, поэтому пока посоветую гуглить и еще раз гуглить. Попробуй для начала оптимизировать базу в phpmyadmin, а потм запрос в гугл "Copying to tmp table".
Re: Проблема с БД (завелся паразитный запрос)
Оптимизировал, конечно. И гуглил. Не хочу больше гуглить.
Я почти уверен, что проблема кроется в самом запросе
SELECT f.forum_id, f.forum_name, t.topic_title, t.topic_time, t.topic_replies, t.topic_view
Я хочу узнать у тех, кто разбирается в коде борды, что это за запрос.
И тогда я решу, что делать дальше.
Добавлено спустя 2 минуты 52 секунды:
PS. Я хочу еще раз подчеркнуть, что тормозит только один (ОДИН) запрос. Только он. Все остальное летает.
Я почти уверен, что проблема кроется в самом запросе
SELECT f.forum_id, f.forum_name, t.topic_title, t.topic_time, t.topic_replies, t.topic_view
Я хочу узнать у тех, кто разбирается в коде борды, что это за запрос.
И тогда я решу, что делать дальше.
Добавлено спустя 2 минуты 52 секунды:
PS. Я хочу еще раз подчеркнуть, что тормозит только один (ОДИН) запрос. Только он. Все остальное летает.
-
xisp
- phpBB 3.0.0 RC7
- Сообщения: 1798
- Стаж: 14 лет 4 месяца
- Благодарил (а): 152 раза
- Поблагодарили: 215 раз
- Забанен: Бессрочно
Re: Проблема с БД (завелся паразитный запрос)
Включите дебаг и под админской учёткой походите по форуму, нажимая на "Explain" снизу, и ищите там этот запрос. Как найдёте- запомните страницу, всё одно сузит область поиска.
phpBBex
Re: Проблема с БД (завелся паразитный запрос)
Прошу пардону, это какая-то функция конференции или серверная?xisp писал(а):Включите дебаг
Подскажите, как это включать.
-
Sheer
- Former team member
- Сообщения: 12113
- Стаж: 19 лет 7 месяцев
- Откуда: Калининград не Кенигсберг
- Благодарил (а): 54 раза
- Поблагодарили: 2756 раз
Re: Проблема с БД (завелся паразитный запрос)
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Re: Проблема с БД (завелся паразитный запрос)
Дебаг выявил кучу мелких косячков, которые я устранил, но вопрос так и не решился.
Вообще есть способ узнать, с какой страницы идет тот или иной запрос к БД?
Желательно, чтобы это можно было записывать в лог.
Вообще есть способ узнать, с какой страницы идет тот или иной запрос к БД?
Желательно, чтобы это можно было записывать в лог.
-
Пчелкин
- phpBB 3.3.0
- Сообщения: 11361
- Стаж: 16 лет 8 месяцев
- Благодарил (а): 1832 раза
- Поблагодарили: 1358 раз
Re: Проблема с БД (завелся паразитный запрос)
Есть...эксплейн все показывает...смотри на здоровье...Crelby писал(а): с какой страницы идет тот или иной запрос к БД?
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Re: Проблема с БД (завелся паразитный запрос)
Если речь про Explain, который в дебаг-моде, то он не подходит. Там последовательность "страница->запрос". А мне нужна обратная, "запрос->страница". Я этот Explain прокликал где мог, но этого запроса не нашел.
Но откуда-то же он взялся, запрос этот?
Но откуда-то же он взялся, запрос этот?
-
Пчелкин
- phpBB 3.3.0
- Сообщения: 11361
- Стаж: 16 лет 8 месяцев
- Благодарил (а): 1832 раза
- Поблагодарили: 1358 раз
Re: Проблема с БД (завелся паразитный запрос)
Когда последний раз смотрел...не?Crelby писал(а):SELECT f.forum_id, f.forum_name, t.topic_title, t.topic_time, t.topic_replies, t.topic_view
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
-
Пчелкин
- phpBB 3.3.0
- Сообщения: 11361
- Стаж: 16 лет 8 месяцев
- Благодарил (а): 1832 раза
- Поблагодарили: 1358 раз
Re: Проблема с БД (завелся паразитный запрос)
Это ответ...запрос ищет в БД - когда последний раз ты смотрел эту тему ... Вродь так получается...
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Re: Проблема с БД (завелся паразитный запрос)
Возможно. Еще такое уточнение.
В принципе возможен вариант, что в php-файлах нет этого запроса в представленном виде, что он генерируется "на лету", составляется из, например, двух запросов?
Извини, если несу ересь, я не глубокий специалист.
Не могу взять в толк, почему не могу найти его в поиске по файлам борды.
Я даже специально скачал все файлы. Ищу с помощью EditPlus. Искал как целиком, так и по частям.
В принципе возможен вариант, что в php-файлах нет этого запроса в представленном виде, что он генерируется "на лету", составляется из, например, двух запросов?
Извини, если несу ересь, я не глубокий специалист.
Не могу взять в толк, почему не могу найти его в поиске по файлам борды.
Я даже специально скачал все файлы. Ищу с помощью EditPlus. Искал как целиком, так и по частям.

