Низкая скорость загрузки сайта с большой базой

InstantCMS 2.X
#1 15 сентября 2022 в 20:19

Доброго здравия.

Установил свеженькую instantcms 2, шаблон модерн. Импортировал контент.

Размер базы данных ~ 100mb, порядка 70.000 страниц.

После, столкнулся с чрезвычайно низкой загрузкой страниц.

Естественно кеш помогает. Но это нужно пройти по всем страницам, чтобы они попали в кеш.

Вот что показал дебаг:

/system/controllers/content/model.php => 1780 => modelContent->getContentItems()
SELECT i.*, MATCH(i.title) AGAINST ('>\«андрей усачёв дрессированный верблюд: стих\» <(дрессирован* верблюд* андре* усачё* стих*)' IN BOOLEAN MODE) as `fsort`, u.nickname as `user_nickname`, u.slug as `user_slug`, u.is_deleted as `user_is_deleted`, u.groups as `user_groups`, u.avatar as `user_avatar`, u.privacy_options as `user_privacy_options`, f.title as `folder_title`, cat.title as `cat_title`, cat.slug as `cat_slug`, cat.id as `category_id`
FROM cms_con_poems i
INNER JOIN cms_users as u ON u.id = i.user_id
LEFT JOIN cms_content_folders as f ON f.id = i.folder_id
LEFT JOIN cms_con_poems_cats as cat ON cat.id = i.category_id
WHERE (MATCH(i.title) AGAINST ('>\«андрей усачёв дрессированный верблюд: стих\» <(дрессирован* верблюд* андре* усачё* стих*)' IN BOOLEAN MODE)) AND (i.id <> '75147') AND (i.is_approved = '1') AND (i.is_deleted IS NULL) AND (i.is_pub = '1')
ORDER BY fsort desc
LIMIT 10

Время выполнения 8.72909 секунд

Есть ли способ ускорить это дело ?

#2 15 сентября 2022 в 20:33

Виджет «похожих» записей стоит? Вероятно индексы у таблиц в бд отсутсвуют.

#3 15 сентября 2022 в 20:36

Виджет «похожих» записей стоит? Вероятно индексы у таблиц в бд отсутсвуют.

Loadырь

Да, Вы правы, виджет похожих записей установлен. А почему индексы отсутствуют? Как сделать чтоб присутствовали? )

#4 15 сентября 2022 в 20:43

А почему индексы отсутствуют?

talerbiz

Потому что не понятно, каким образом осуществлялся процесс

Импортировал контент

talerbiz

Вероятно перенесли только данные или таблицы и данные, а запросы на индексы обычно идут отдельно при экспорте.

Добавлено спустя 1 минуту

Как сделать чтоб присутствовали? )

talerbiz

Добавить, если их нет. Но сначала надо проверить их наличие в новой бд.

#5 15 сентября 2022 в 20:52

А почему индексы отсутствуют?

talerbiz

Потому что не понятно, каким образом осуществлялся процесс

Импортировал контент

talerbiz

Вероятно перенесли только данные или таблицы и данные, а запросы на индексы обычно идут отдельно при экспорте.

Как сделать чтоб присутствовали? )

talerbiz

Добавить, если их нет. Но сначала надо проверить их наличие в новой бд.

Loadырь

Спасибо, с индексами буду разбираться. На данный момент отключил виджет «похожих» записей, что значительно увеличило скорость загрузки страниц. Также заметил, что компонент «Navigation» (Ссылки на следующую и предыдущую статью), тоже тормозит отображение страниц. Отключил — загрузка страниц c .html  теперь летает. Главная страница, а также страницы с тегами, категориями -  без изменений. Очень долго загружаются.

#6 22 августа 2023 в 09:41

К сожалению, так и не разобрался.

Установил свеженькую версию instantcms, думал может проблема ушла.

Импортировал на сайт 70k статей, импорт прошел успешно.

Поля: Заголовок и текст. Текста небольшие. Тип контента всего один, категорий нет, только корневая.

После импорта, страница со статьями открывается начала открываться медленно, дебаг показывает около 5 секунд.

Пагинация работает тоже с задержкой.

Все работает быстро кроме: /system/controllers/content/model.php

Кеш отключен. Понятное дело что закешированные страницы решат проблему, но не то. 

Человек зашел, решил пройтись по разделу и ему нужно ждать по 5-7 сек на каждый клик ?

С индексами должно быть все в порядке. Правда как это проверить я не знаю, не разбираюсь.

#7 22 августа 2023 в 09:50

Тут 173к записей prefitchi.ru/hotels на обычном шареде. Работает вполне себе.

Сталкивался с описанной вами проблемой на одном сайте. Решить не смог :(

Пока из советов только ОТКЛЮЧИТЬ эту опцию 

Изображение

Очень часто в таком поведении виновата она.

#8 22 августа 2023 в 10:42

Тут 173к записей prefitchi.ru/hotels на обычном шареде. Работает вполне себе.

Сталкивался с описанной вами проблемой на одном сайте. Решить не смог :(

Пока из советов только ОТКЛЮЧИТЬ эту опцию 

Изображение

Очень часто в таком поведении виновата она.

Zau4man

Там где 173k работает супер, довольно быстро. У меня на VPS сервере про ужас (

Instant -  это быстрый, мгновенный, а не то что случилось после 70k записей, очень интересно найти причину.

Функцию как на скриншоте я отключил, ничего не поменялось. В личку Вам демку кину ради интереса, может глянете

#9 22 августа 2023 в 11:16

Зайдите в phpMyAdmin, выберите таблицу вашего типа контента с 70к записей. Откройте вкладку «Структура» 

Изображение

Промотайте вниз до раздела «Индексы»

Изображение

Сделайте скриншот всех индексов и выложите его сюда.

#10 22 августа 2023 в 11:37

Зайдите в phpMyAdmin, выберите таблицу вашего типа контента с 70к записей. Откройте вкладку «Структура» 

Промотайте вниз до раздела «Индексы»

Сделайте скриншот всех индексов и выложите его сюда.

Loadырь

Здравствуйте. Вот:

Изображение

#11 22 августа 2023 в 16:30

На вид всё красиво. Дальше только explainом смотреть на запросы.

#12 22 августа 2023 в 17:38

 goose, может дело в повторяющихся датах? Судя по индексам, часты повторы. И базе тяжело их сортировать. Из серии «пальцем в небо»

#13 22 августа 2023 в 18:03

 goose, может дело в повторяющихся датах? Судя по индексам, часты повторы. И базе тяжело их сортировать. Из серии «пальцем в небо»

Zau4man

хм, не думал об этом, попробую провести эксперимент, сделаю разные даты

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