Jump to content
Sign in to follow this  
mastanggt

1 страница грузится 5-10 секунд

Recommended Posts

Здравствуйте.

Дабы не создавать кучу подобных тем напишу сюда.

Сейчас на сайте огромное количество категорий и из-за этого долго грузятся страницы.

Пробовал убирать общее количество файлов и добавлял индексы Mysql, роде все нормализовалось но все равно 1 страница грузится 5-10 секунд.

 

https://suveniry-optom0030ok.ru/suveniry-sima-land/ - вот сама ссылка которая долго грузится.

Внизу страницы вставлен хмл файл в котором отображаются сколько выполняются какие запросы.

https://suveniry-optom0030ok.ru/ - вот просто ссылка на сайт.

 

 

Вот запрос который выполняется очень долго.

query time:17.9917 seconds | controller: ControllerProductCategory
SELECT DISTINCT SQL_CALC_FOUND_ROWS p.product_id, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < '2015-09-19 17:00:00') AND (pd2.date_end = '0000-00-00' OR pd2.date_end > '2015-09-19 17:00:00')) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < '2015-09-19 17:00:00') AND (ps.date_end = '0000-00-00' OR ps.date_end > '2015-09-19 17:00:00')) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special FROM oc_product_to_category p2c LEFT JOIN oc_product p ON (p2c.product_id = p.product_id) LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= '2015-09-19 17:00:00' AND p2s.store_id = '0' AND p2c.category_id = '610' GROUP BY p.product_id ORDER BY (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END) ASC, LCASE(pd.name) ASC LIMIT 0,15

 

Прошу помощи 

Share this post


Link to post
Share on other sites

ну надо смотреть explain запроса. Думать про оптимизацию, количество данных в таблицу

Share this post


Link to post
Share on other sites

Около 68к товаров и подкатегорий много, несколько сотен точно

Share this post


Link to post
Share on other sites

именно в категории 620 очень много товаров?

Share this post


Link to post
Share on other sites

Ну в ее подкатегориях.

А товары отображаются в своей категории и в родителях.

Share this post


Link to post
Share on other sites

отказаться от сортировки по рейтингу,  Минус один подзапрос

Если нет СКИДОК (не акций) - еще один минус

Share this post


Link to post
Share on other sites

хранимые агрегаты. Да, пилить долго, но зато все работать будет аж пулей.

Edited by nikifalex

Share this post


Link to post
Share on other sites

подсчет категорий отключите, а то у вас по полторы секунды на каждую тратится

query time:1.5057 seconds | controller: ControllerProductCategory
SELECT COUNT(DISTINCT p.product_id) AS total FROM oc_category_path cp LEFT JOIN oc_product_to_category p2c ON (cp.category_id = p2c.category_id) LEFT JOIN oc_product p ON (p2c.product_id = p.product_id) LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= '2015-09-19 20:52:00' AND p2s.store_id = '0' AND cp.path_id = '7460'
query time:1.468 seconds | controller: ControllerProductCategory
SELECT COUNT(DISTINCT p.product_id) AS total FROM oc_category_path cp LEFT JOIN oc_product_to_category p2c ON (cp.category_id = p2c.category_id) LEFT JOIN oc_product p ON (p2c.product_id = p.product_id) LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= '2015-09-19 20:52:00' AND p2s.store_id = '0' AND cp.path_id = '5891'
query time:1.5601 seconds | controller: ControllerProductCategory
SELECT COUNT(DISTINCT p.product_id) AS total FROM oc_category_path cp LEFT JOIN oc_product_to_category p2c ON (cp.category_id = p2c.category_id) LEFT JOIN oc_product p ON (p2c.product_id = p.product_id) LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= '2015-09-19 20:52:00' AND p2s.store_id = '0' AND cp.path_id = '6261'

Share this post


Link to post
Share on other sites

Это не существенно :(

 

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

 

 

Там существенеа разница в двух категоряих Новый год и проблемная.

У обоих около >60к

Но новогодняя грузится быстро, проблемная...

Share this post


Link to post
Share on other sites

Это не существенно :(

 

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

 

 

Там существенеа разница в двух категоряих Новый год и проблемная.

У обоих около >60к

Но новогодняя грузится быстро, проблемная...

новогодняя оттого и грузится быстро, что у ней подсчет всего в одной подкатегории идет

а в проблемной - категорий больше одной и все они считаются

 

Внизу страницы вставлен хмл файл в котором отображаются сколько выполняются какие запросы.

 

PS:насчет быстро - быстро относительно мегапроблемной

Edited by AlexDW

Share this post


Link to post
Share on other sites

Это не существенно :(

 

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

 

 

Там существенеа разница в двух категоряих Новый год и проблемная.

У обоих около >60к

Но новогодняя грузится быстро, проблемная...

 

60к товаров на категорию при кривых настройках укладывает 2гига VPS.

Тут нужен БОЛЬШОЙ БУБЕН.

Если решить допустим вопрос подсчета товаров их отключением вылезет еще минимум в трех местах и это без доп фунционала.

 

Под подобный проект нужно комплексное железно-программно-настроечное решение. А не "ДАЙТЕ ЗАПЛАТКУ ЧТОБЫ ПОЛЕТЕЛО".

 

С такими "самолетами можно и неделю провозится вручную дотачивая каждую запятую в запросах".

 

Можно еще купить BOOST CHUCKHA-OPTIMIZER, нанять 5 рых настройщиков скрипок и потом все равно оказаться в моих руках.

 

:ugeek:

Edited by snastik

Share this post


Link to post
Share on other sites

во! только хотел посоветовать ТС обратиться к snastik`у :D

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.