Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Сильно начала тормозить загрузка страницы товара. Нужна помощь.


Recommended Posts

Сайт: pyn.com.ua

 

Была старая версия движка ocstore 1.5.2.1

Одновился до ocstore 1.5.5.1.2

 

Обновил следующие модули:

  • OpenCatMenu - Визуальный конструктор меню категорий
  • Простая регистрация и заказ Simple

Был установлен Seopro и потом seogen от freelancer. 

 

Все было ок, но в один момент начала сильно глючить загрузка страницы товара ( раза в 4 дольше обычного) 

Обратился к хостеру. Получил следующий ответ: 

 

В данном случае происходят долгие MYSQL запросы в базу данных.
Например, больше секунды занимает запрос:

SELECT DISTINCT SQL_CALC_FOUND_ROWS p.product_id, (SELECT AVG(rating) AS total FROM review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT price FROM product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '8' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < '2015-01-14 08:09:00') AND (pd2.date_end = '0000-00-00' OR pd2.date_end > '2015-01-14 08:09:00')) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '8' AND ((ps.date_start = '0000-00-00' OR ps.date_start < '2015-01-14 08:09:00') AND (ps.date_end = '0000-00-00' OR ps.date_end > '2015-01-14 08:09:00')) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special FROM product p LEFT JOIN product_description pd ON (p.product_id = pd.product_id) LEFT JOIN 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-01-14 08:09:00' AND p2s.store_id = '0' GROUP BY p.product_id ORDER BY p.date_added DESC, LCASE(pd.name) DESC LIMIT 0,4

 
Также, есть запрос который повторяется многократно и в нём меняется только cp.path_id:

SELECT COUNT(DISTINCT p.product_id) AS total FROM category_path cp LEFT JOIN product_to_category p2c ON (cp.category_id = p2c.category_id) LEFT JOIN product p ON (p2c.product_id = p.product_id) LEFT JOIN product_description pd ON (p.product_id = pd.product_id) LEFT JOIN 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-01-14 08:09:00' AND p2s.store_id = '0' AND cp.path_id = '446'

Можно проставить индексы на все таблицы, к которым идут запросы SELECT, JOIN и UPDATE.
С данным вопросом необходимо обратиться в компанию или к специалисту, которые занимаются оптимизацией сайтов.
Можно предоставить им файл strace.log, который поможет локализовать проблему.
 
 
Был еще 1 ответ от хостера: 

Здравствуйте. Данная проблема связана с тем, что opencart пытается каждый раз посчитать количество товаров для каждой категории. Проблема решается или отключением отображения количества товаров или комментированием кода в скриптах сайта.
Закоментаровал вызов подсчета товаров в файле
kovaly@ares:~/pyn/public_html [0] $ vim catalog/controller/common/header.php
строки 124 и 128
kovaly@ares:~/pyn/public_html [0] $ vim catalog/controller/product/category.php
строки 202 и 206
kovaly@ares:~/pyn/public_html [0] $ vim catalog/controller/module/category.php
строки 202 и 206

Изменил движок таблиц на InnoDB, что должно сказаться на снижении нагрузки на Базу данных.
ALTER TABLE product_to_store ENGINE=InnoDB;
ALTER TABLE category_path ENGINE=InnoDB;
ALTER TABLE product_to_category ENGINE=InnoDB;
ALTER TABLE product ENGINE=InnoDB;
ALTER TABLE product_description ENGINE=InnoDB;

Добавил индексы
[email protected][kovaly_andr]> alter table url_alias add index (`keyword`);
[email protected][kovaly_andr]> alter table url_alias add index (`query`);

Текущая нагрузка на базу данных превышает допустимую в 20 раз. На данные момент у Вас использовано 49000 секунд из 2500 доступных. Если снижения нагрузки на БД не произойдет, администраторами может быть установлен кеширующий шаблон ограничивающий количество обращений (ответ сервера отдается из кеша) к сайту и как следствие снижающий нагрузку на БД.

 

Пожалуйста, у кого есть возможность - подскажите где искать проблему.

Спасибо!

 

Надіслати
Поділитися на інших сайтах


Подсчёт количества товаров включен?

Меню категорий слева стандартное?

В 3 спойлере хостер мне ответил, что закоментил подсчет кол-ва товаров.

Слева стоит нестандартное меню категорий. Установлен модуль "OpenCatMenu - Визуальный конструктор меню категорий".

Надіслати
Поділитися на інших сайтах


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

Ваш модуль значительно ускорит работу, но не решит существующую проблему.

 

 если не сложно - посмотрите пожалуйста на ответ хостера, может сможете что-то подсказать.

Надіслати
Поділитися на інших сайтах


Если ответ новый, то стоило его сюда отдельно дописать, а не добавлять в первое сообщение.

Поставьте debugger и посмотрите причины

https://opencartforum.com/topic/19017-%D0%BE%D1%82%D0%BB%D0%B0%D0%B4%D1%87%D0%B8%D0%BA-%D0%B4%D0%BB%D1%8F-opencart-debugger/

Надіслати
Поділитися на інших сайтах

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

Ваш модуль значительно ускорит работу, но не решит существующую проблему.

 

 если не сложно - посмотрите пожалуйста на ответ хостера, может сможете что-то подсказать.

Именно эту проблему  и решает модуль. Можно комплексно запилить ваш магазин - пишите в личку.

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.