Кто поможет оптимизировать запросы к БД чтобы снизить нагрузку на сервер?

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО
#1 24 января 2020 в 13:28
В данный момент на вашем сервере больше всего нагрузки создаётся процессом mysql. В нём висит два очень долгих процесса. В текущей ситуации вам необходимо обратиться к разработчику сайта, так как оптимизация настроек базы данных сильного результата не даёт. Нужно оптимизировать запросы к БД, чтобы они не выполнялись на протяжении такого количества времени.
| 143 | dizuser | localhost | diz | Query | 91 | Copying to tmp table | SELECT c.*,
IFNULL(u.nickname, 0) as nickname,
IFNULL(u.login, 0) as login,
IFNULL(u.is_deleted, 0) as is_deleted,
IFNULL(p.imageurl, 0) as imageurl,
IFNULL(p.gender, 0) as gender
FROM cms_comments c
LEFT JOIN cms_users u ON u.id = c.user_id
LEFT JOIN cms_user_profiles p ON p.user_id = u.id
WHERE c.published = 1
AND (c.target IN ('mapnews','mapitem','blog','article','palbum','photo','userphoto'))
AND (c.is_hidden=0)



ORDER BY c.pubdate DESC
LIMIT 0, 6 |
| 152 | dizuser | localhost | diz | Query | 34 | Copying to tmp table | SELECT c.*,
IFNULL(u.nickname, 0) as nickname,
IFNULL(u.login, 0) as login,
IFNULL(u.is_deleted, 0) as is_deleted,
IFNULL(p.imageurl, 0) as imageurl,
IFNULL(p.gender, 0) as gender
FROM cms_comments c
LEFT JOIN cms_users u ON u.id = c.user_id
LEFT JOIN cms_user_profiles p ON p.user_id = u.id
WHERE c.published = 1
AND (c.target IN ('mapnews','mapitem','blog','article','palbum','photo','userphoto')
AND (c.is_hidden=0)
ORDER BY c.pubdate DESC
LIMIT 0, 6 |
Сайт сейчас открылся, спустя 2 минуты.
--
#2 24 января 2020 в 13:49

В данный момент на вашем сервере больше всего нагрузки создаётся процессом mysql. В нём висит два очень долгих процесса. В текущей ситуации вам необходимо обратиться к разработчику сайта, так как оптимизация настроек базы данных сильного результата не даёт. Нужно оптимизировать запросы к БД, чтобы они не выполнялись на протяжении такого количества времени.

@AlexProfit

Комменты часто добавляются? тип таблицы MyISAM или InnoDB?, у вас идёт копирование в tmp таблицу при выборке проанализируйте запрос с добавлением ANALYZE до SELECT
#3 24 января 2020 в 13:57
ideasdigger

Благодарю за ответ… Я не силен в Базах данных )) в этой CMS ...


Комменты часто добавляются? тип таблицы MyISAM или InnoDB?, у вас идёт копирование в tmp таблицу при выборке проанализируйте запрос с добавлением ANALYZE до SELECT

ideasdigger

Добавляются боты как пользователи и висят как не активные, наверно и пишут комментарии. Сейчас сижу вручную по одному удаляю этих пользователей, так как cron на удаление неактивных пользователей запускал, но он виснит.
Возможно я выбирал пользователей чтобы их пакетом удалить...

Где мне посмотреть тип таблицы?
Как мне это проанализировать и выяснить что к чему и как снизить нагрузку?
#4 24 января 2020 в 14:19

Где мне посмотреть тип таблицы?
Как мне это проанализировать и выяснить что к чему и как снизить нагрузку?

@AlexProfit
phpmyadmin будет удобно для откладки и для просмотра типа таблиц колонка тип, для понимания логики выборки по трудным запросам используйте ANALYZE, для понимания общей ситуации и поиска запросов которые тормозят выдачу в режиме реал тайм в sql SHOW PROCESSLIST, можно ещё конфиг my.cnf поправить что бы запросы на которые требуется более n-секунд записывались в файл, ну а решив проблемы с не оптимизированными запросами, для поднастройки конфига отлично подойдёт github.com/major/MySQLTuner-perl
#5 24 января 2020 в 14:20

Как мне это проанализировать и выяснить что к чему и как снизить нагрузку?

@AlexProfit
Имхо, самый разумный вариант — обратиться к спецу, здоровее будете. Тем более, что в этом случае спеца и искать не надо (он уже здесь).
#6 24 января 2020 в 14:31


Где мне посмотреть тип таблицы?
Как мне это проанализировать и выяснить что к чему и как снизить нагрузку?

@AlexProfit
phpmyadmin будет удобно для откладки и для просмотра типа таблиц колонка тип, для понимания логики выборки по трудным запросам используйте ANALYZE, для понимания общей ситуации и поиска запросов которые тормозят выдачу в режиме реал тайм в sql SHOW PROCESSLIST, можно ещё конфиг my.cnf поправить что бы запросы на которые требуется более n-секунд записывались в файл, ну а решив проблемы с не оптимизированными запросами, для поднастройки конфига отлично подойдёт github.com/major/MySQLTuner-perl

ideasdigger

Благодарю!
#7 24 января 2020 в 14:32


Как мне это проанализировать и выяснить что к чему и как снизить нагрузку?

@AlexProfit
Имхо, самый разумный вариант — обратиться к спецу, здоровее будете. Тем более, что в этом случае спеца и искать не надо (он уже здесь).

Олег Васильевич я

Цена вопроса, что нужно для этого?
Меня интересует результат — чтобы сайт работал и не заваливал сервер.
#8 24 января 2020 в 15:04


phpmyadmin будет удобно для откладки и для просмотра типа таблиц колонка тип,

ideasdigger

тип таблицы MyISAM — с этим разобрался))… спасибо вам...

С остальным так и не понял… куда писать запрос с добавлением ANALYZE до SELECT… как это делается…
#9 24 января 2020 в 18:08
Запрос собирает комменты от всех пользователей на все компоненты.
Делает это, скорее всего, модуль "Последние комментарии", поэтому для начала, чтобы не заваливать сервер, попробуйте просто отключить этот модуль:
Админка -> Модули -> Последние комментарии

Если этот модуль сильно дорог Вашему сердцу, пишите в личку — подскажу как поменять запрос
#10 24 января 2020 в 19:29

Цена вопроса

@AlexProfit
Я ж не предлагал вам услуг. Зачем у меня спрашивать цену вопроса?
#11 26 января 2020 в 02:24


Запрос собирает комменты от всех пользователей на все компоненты.
Делает это, скорее всего, модуль "Последние комментарии", поэтому для начала, чтобы не заваливать сервер, попробуйте просто отключить этот модуль:
Админка -> Модули -> Последние комментарии

Если этот модуль сильно дорог Вашему сердцу, пишите в личку — подскажу как поменять запрос

Ленивый

Благодарю, что откликнулись. Нашел этот модуль...
Пока решил не отключать.
По удалял левых пользователей и сделал регистрацию по инвайту.

Понаблюдаю.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.