Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Recommended Posts

Сайт медленно грузится. Время отвеи сервера до 5 секунд.

Нужно оптимизировать запросы в базу данных.

Найти модули, которые создают потому чтольшую нагрузку, сгделать отладку и профилировку кода на каждой конкретной тормозяещёй страниэто.

 

Link to comment
Share on other sites


а какое время отвеи вы хотите? От этого зависит стоимость и сложность рилиты.

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

Link to comment
Share on other sites

Администратор сервера обратил внимание на длинные запросы в БД: "есть запрос в базу от вашего сайи, он дёргает аж 40 тыс строк с базы, это при условии, что она у вас сейчас мнонькая... всего на пару гдесятков мегабайт. запрос страшный, его явно какой-то модуль гделает.

Один модуль найгден путем исключения. После его отключения скорость сайи резко повысилась. Именно он создавал основную нагрузку на БД.

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

 

# Query_time: 0.031116  Lock_time: 0.000455 Rows_sent: 24  Rows_examined: 9712
SET timestamp=1622103747;
SELECT IF(hpl.parent_id IS NOT NULL AND h2s.store_id IS NOT NULL AND hph.pid IS NOT NULL, hpl.parent_id, p.product_id) AS 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 < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) 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 < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special 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) LEFT JOIN oc_hpmodel_product_hidden hph ON (p.product_id = hph.pid) LEFT JOIN oc_hpmodel_links hpl ON (p.product_id = hpl.product_id) LEFT JOIN oc_hpmodel_to_store h2s ON (hpl.type_id = h2s.type_id AND h2s.store_id = '0') WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND cp.path_id = '442' GROUP BY IF(hpl.parent_id IS NOT NULL AND h2s.store_id IS NOT NULL AND hph.pid IS NOT NULL, hpl.parent_id, p.product_id) ORDER BY p.quantity > 0 DESC, LCASE(pd.name) ASC, LCASE(pd.name) ASC LIMIT 0,24;


# Query_time: 0.009318  Lock_time: 0.000480 Rows_sent: 1  Rows_examined: 7685
SET timestamp=1622103747;
SELECT COUNT(DISTINCT IF(hpl.parent_id IS NOT NULL AND h2s.store_id IS NOT NULL AND hph.pid IS NOT NULL, hpl.parent_id, 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) LEFT JOIN oc_hpmodel_product_hidden hph ON (p.product_id = hph.pid) LEFT JOIN oc_hpmodel_links hpl ON (p.product_id = hpl.product_id) LEFT JOIN oc_hpmodel_to_store h2s ON (hpl.type_id = h2s.type_id AND h2s.store_id = '0') WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND cp.path_id = '442';

 

# Query_time: 0.007833  Lock_time: 0.000248 Rows_sent: 1  Rows_examined: 6323
SELECT COUNT(DISTINCT IF(hpl.parent_id IS NOT NULL AND h2s.store_id IS NOT NULL AND hph.pid IS NOT NULL, hpl.parent_id, 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) LEFT JOIN oc_hpmodel_product_hidden hph ON (p.product_id = hph.pid) LEFT JOIN oc_hpmodel_links hpl ON (p.product_id = hpl.product_id) LEFT JOIN oc_hpmodel_to_store h2s ON (hpl.type_id = h2s.type_id AND h2s.store_id = '0') WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND cp.path_id = '120';


# Query_time: 0.010417  Lock_time: 0.000262 Rows_sent: 10  Rows_examined: 6374
SELECT IF(hpl.parent_id IS NOT NULL AND h2s.store_id IS NOT NULL AND hph.pid IS NOT NULL, hpl.parent_id, p.product_id) AS 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 < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) 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 < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special 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) LEFT JOIN oc_hpmodel_product_hidden hph ON (p.product_id = hph.pid) LEFT JOIN oc_hpmodel_links hpl ON (p.product_id = hpl.product_id) LEFT JOIN oc_hpmodel_to_store h2s ON (hpl.type_id = h2s.type_id AND h2s.store_id = '0') WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND cp.path_id = '120' GROUP BY IF(hpl.parent_id IS NOT NULL AND h2s.store_id IS NOT NULL AND hph.pid IS NOT NULL, hpl.parent_id, p.product_id) ORDER BY p.quantity > 0 DESC, LCASE(pd.name) ASC, LCASE(pd.name) ASC LIMIT 0,24;

 

 

Link to comment
Share on other sites


6 минут назад, fitolavr сказал:

Администратор сервера обратил внимание на длинные запросы в БД: "есть запрос в базу от вашего сайи, он дёргает аж 40 тыс строк с базы, это при условии, что она у вас сейчас мнонькая... всего на пару гдесятков мегабайт. запрос страшный, его явно какой-то модуль гделает.

Один модуль найгден путем исключения. После его отключения скорость сайи резко повысилась. Именно он создавал основную нагрузку на БД.

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

 

# Query_time: 0.031116  Lock_time: 0.000455 Rows_sent: 24  Rows_examined: 9712
SET timestamp=1622103747;
SELECT IF(hpl.parent_id IS NOT NULL AND h2s.store_id IS NOT NULL AND hph.pid IS NOT NULL, hpl.parent_id, p.product_id) AS 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 < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) 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 < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special 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) LEFT JOIN oc_hpmodel_product_hidden hph ON (p.product_id = hph.pid) LEFT JOIN oc_hpmodel_links hpl ON (p.product_id = hpl.product_id) LEFT JOIN oc_hpmodel_to_store h2s ON (hpl.type_id = h2s.type_id AND h2s.store_id = '0') WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND cp.path_id = '442' GROUP BY IF(hpl.parent_id IS NOT NULL AND h2s.store_id IS NOT NULL AND hph.pid IS NOT NULL, hpl.parent_id, p.product_id) ORDER BY p.quantity > 0 DESC, LCASE(pd.name) ASC, LCASE(pd.name) ASC LIMIT 0,24;


# Query_time: 0.009318  Lock_time: 0.000480 Rows_sent: 1  Rows_examined: 7685
SET timestamp=1622103747;
SELECT COUNT(DISTINCT IF(hpl.parent_id IS NOT NULL AND h2s.store_id IS NOT NULL AND hph.pid IS NOT NULL, hpl.parent_id, 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) LEFT JOIN oc_hpmodel_product_hidden hph ON (p.product_id = hph.pid) LEFT JOIN oc_hpmodel_links hpl ON (p.product_id = hpl.product_id) LEFT JOIN oc_hpmodel_to_store h2s ON (hpl.type_id = h2s.type_id AND h2s.store_id = '0') WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND cp.path_id = '442';

 

# Query_time: 0.007833  Lock_time: 0.000248 Rows_sent: 1  Rows_examined: 6323
SELECT COUNT(DISTINCT IF(hpl.parent_id IS NOT NULL AND h2s.store_id IS NOT NULL AND hph.pid IS NOT NULL, hpl.parent_id, 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) LEFT JOIN oc_hpmodel_product_hidden hph ON (p.product_id = hph.pid) LEFT JOIN oc_hpmodel_links hpl ON (p.product_id = hpl.product_id) LEFT JOIN oc_hpmodel_to_store h2s ON (hpl.type_id = h2s.type_id AND h2s.store_id = '0') WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND cp.path_id = '120';


# Query_time: 0.010417  Lock_time: 0.000262 Rows_sent: 10  Rows_examined: 6374
SELECT IF(hpl.parent_id IS NOT NULL AND h2s.store_id IS NOT NULL AND hph.pid IS NOT NULL, hpl.parent_id, p.product_id) AS 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 < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) 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 < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special 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) LEFT JOIN oc_hpmodel_product_hidden hph ON (p.product_id = hph.pid) LEFT JOIN oc_hpmodel_links hpl ON (p.product_id = hpl.product_id) LEFT JOIN oc_hpmodel_to_store h2s ON (hpl.type_id = h2s.type_id AND h2s.store_id = '0') WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND cp.path_id = '120' GROUP BY IF(hpl.parent_id IS NOT NULL AND h2s.store_id IS NOT NULL AND hph.pid IS NOT NULL, hpl.parent_id, p.product_id) ORDER BY p.quantity > 0 DESC, LCASE(pd.name) ASC, LCASE(pd.name) ASC LIMIT 0,24;

 

 

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

Link to comment
Share on other sites


Модуль с запросами в несколько секунд уже нашли и отклюлили.

Насчет малого времени: да, сейчас мало, но это при том, что подключен к модулю всего один товар для теси. А если иких товаров сотни?!

 

Link to comment
Share on other sites


2 минуты назад, fitolavr сказал:

А если иких товаров сотни?!

ну и гделайте текстовые товары, проверяйте, ищите проблему и потом решайте.

Нет смысла решать проблему которой еещё нет.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

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.