Нагрузка сервера, MySQL. Решения, выявляющие скрипты, которые нагружают базу

InstantCMS 2.X
#16 3 июня 2018 в 23:50

А может просто у меня руки кривые

шэльдэ бердэ бельдэ
Я тут недавно столкнулся с кривизной собственных рук.
instantcms.ru/forum/thread28414-1.html
Сейчас всё летает.
#17 3 июня 2018 в 23:56

Какой-то отладочной информации там нет.

Polzovinst
И не должно быть

Или воспользоваться этим

Polzovinst
Нет необходимости

Честно говоря, я удивлён. Тогда будем картинками показывать.

Нажать тут


Откроется это


На сайте один тип контента, в нем 350к записей. Тормозит, да

шэльдэ бердэ бельдэ
Я не знаю почему тормозит всего лишь с 350К записей, у меня есть таблицы с 2КК записями — летает. Правда нужно учитывать тот факт, что на актуальных sql серверах, как MariaDB и крайние версии MySQL, при установке нужно выбирать движок таблиц innodb. С myisam по каким то причинам они работают весьма странно. Вообще, как показывает практика, в таких случаях нужно смотреть конкретно на конкретном сервере.

Скорее всего нагрузку создают редиректы

Alex
Редиректы нагрузку не создают.
#18 3 июня 2018 в 23:58
Fuze, sorry, то я не то...

Вспомнил, разобрался где отладка


Я тут недавно столкнулся с кривизной собственных рук.
instantcms.ru/forum/thread28414-1.html
Сейчас всё летает.

Ris
Почитаем
#19 4 июня 2018 в 00:20
Тож мне, кстати, хостер и дал две ссылки про оптимизацию и индекс

Мол, учи, исправляй.
Сейчас только отожмусь, потом за минуту всё пойму, за вторую всё подправлю)
#20 4 июня 2018 в 00:33
Завтра предложу принять закон, чтобы программистам в стаж год за 4 зачитывали. А то думают тут так себе, а тут во как! И пенсию повышенную.
#21 4 июня 2018 в 01:58

при установке нужно выбирать движок таблиц innodb

Fuze
Вот оно как)) Знать не знал, что такое бывает)) Да, myisam. Не знаю, если ли способ сменить теперь это сменить. Написал хостеру, может подскажет))

Я тут недавно столкнулся

Ris
Всё очень здорово)) Только мне не понять. Я не разбираюсь в работе бд)) А тем более, в запросах и прочих штуках)) Но все равно спасибо))
#22 4 июня 2018 в 08:33

Вот оно как)) Знать не знал, что такое бывает)) Да, myisam. Не знаю, если ли способ сменить теперь это сменить. Написал хостеру, может подскажет))

шэльдэ бердэ бельдэ


Выделение съехало, нужная строка выше.

Варианта сменить у всех таблиц разом в phpmyadmin не нашел…
#23 4 июня 2018 в 09:13

Я тут недавно столкнулся с кривизной собственных рук.
instantcms.ru/forum/thread28414-1.html
Сейчас всё летает.

Ris
В указанной теме есть оговорки и рекомендации, а готового решения как оптимизировать индексы нет.
Мог ли бы вы здесь дать окончательное решение или это сугубо индивидуально?
#24 4 июня 2018 в 10:24
Zau4man, спасибо)) Очевидные вещи, а я не вижу. Хостер мне то же самое рассказал. Поменял все таблицы, посмотрю, что это даст. Может и вправду поможет))
#25 4 июня 2018 в 11:46

Мог ли бы вы здесь дать окончательное решение или это сугубо индивидуально?

vikont
Окончательного решения (типа потереть спиртом крышку сервера и все станет хорошо) не существует. Но я могу рассказать примерную методику действий для настройки индексов.
1. Нужно выявить, какие запросы долго выполняются. Для этого нужно включить логирование долгих запросов:
Как включить логирование медленных запросов.
Только я советую создать папку в каталоге с сайтом и писать логи туда, чтобы можно было быстро их посмотреть и не лазить в глубины сервера. Например так:
  1. slow_query_log = /home/ваш_юзер/web/ваш_сайт/mysql-slow.log
  2. long_query_time = 1
Все запросы дольше одной секунды будут писаться в лог.
Также долгие запросы можно посмотреть просто в отладке.
2. Теперь советую развернуть копию базы на локальном сайте (опенсервер, денвер и т.д.), чтобы можно было экспериментировать без опасения угробить сайт.
Копируем эти долгие запросы из лога, вставляем в phpmyadmin на локальном сайте и смотрим, как они выполняются. Смотрим explain запросов и смотрим, какие индексы использовались и что тормозит.
3. Теперь можно приступить к экспериментам над индексами. Приведу примеры из моего опыта:
Открываем нужную базу, нужную таблицу — Структура. Тут можно менять местами пункты в составных индексах, добавлять и удалять пункты.
Приблизительный алгоритм следующий:
Какие столбцы используются в WHERE — те поставить на первые места, а по каким идет сортировка (ORDER BY) — те на последние.
4. Также еще нужно настроить сам сервер mysql, задать кэширование и т.д.
Там все тоже требует экспериментов и универсального конфига не существует. Вот приблизительные рекомендации:
admin-club.ru/faq/641-mysql-queries-cache.html

И вообще, почитайте вот тут всё:
ruhighload.com/mysql
#26 4 июня 2018 в 12:02

И вообще, почитайте вот тут всё:
ruhighload.com/mysql

Ris
Буковки знакомы вижу, а вот мозгов не хватает… smile
Вот тут Оптимальная настройка MySQL нашел для своего понимания...
А индексы пока как космические полеты… laugh

1. Нужно выявить, какие запросы долго выполняются. Для этого нужно включить логирование долгих запросов:
Как включить логирование медленных запросов.

Ris
А тут пишут, что ничего не найдено.
#27 4 июня 2018 в 12:33

А тут пишут, что ничего не найдено.

vikont
Значит все быстро и хорошо.
#28 4 июня 2018 в 19:13
#29 4 июня 2018 в 20:33

Что какие-то скрипты на сайте делают много запросов к базе.

Polzovinst
Виджет тегов, с перемешиванием, наверное, много запросов делает.
#30 4 июня 2018 в 23:29

Этим можно воспользоваться instantcms.ru/addons/debug.html ?

Polzovinst
Эта расширенная отладка была только до версии движка 2.7.0, с более новыми версиями она не совместима. Далее Fuze добавил в стандартную отладку больше информации, для основных целей её хватает.
Но на всякий случай скажу, если у Вас движок до 2.7 и данные расширенной отладки верные, то проблемные запросы всё-таки в каком-то виджете.

Polzovinst, Вам Fuze показал на картинке, как посмотреть долгие запросы. Включите стандартную отладку и найдите страницу сайта с долгим временем выполнения. На ней откройте окно отладки. В его первой вкладке перечислены все SQL-запросы страницы. Просмотрите и найдите самые долгие из них (самое большое время выполнения). Их скрины покажите в этой теме, если сами не уловите, к какой части движка они относятся.

Все остальные манипуляции (оптимизация, индексы, перевод в InnoDB и т.п.) имеет смысл делать только после понимания, что и где именно тормозит.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.