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

Начал торомозить сайт!


w00

Recommended Posts

Ребята, помогите советом! Делали сайт на opencart, были какие то доделки небольшие, пару таблиц добавили и фильтры переделали, программист толковый был по этому не думаю что из за этого, к тому же по началу все нормально работало, может слегка притормаживало...

А последнюю неделю прям прогрессирует, сегодня вообще с третей попытки зашел "Internal Server Error", с хостингом все ок, еще пара сайтов на том же серваке летают...

Помогите советом, у кого может тоже тормозил как решили? вообще из за чего может так жестко тормозить?

Вот сам сайт ...

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


Ребята, помогите советом! Делали сайт на opencart, были какие то доделки небольшие, пару таблиц добавили и фильтры переделали, программист толковый был по этому не думаю что из за этого, к тому же по началу все нормально работало, может слегка притормаживало...

А последнюю неделю прям прогрессирует, сегодня вообще с третей попытки зашел "Internal Server Error", с хостингом все ок, еще пара сайтов на том же серваке летают...

Помогите советом, у кого может тоже тормозил как решили? вообще из за чего может так жестко тормозить?

Вот сам сайт http://domsovkusom.ru

да что можно понять по одному урлу..

нужно смотреть что было добавлено

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

а если абстрагироваться от разработки?

есть какие-то типичные причины тормозов для движка 1.5?

как можно оптимизировать?

у кого есть опыт по такой работе?

товаров 4000, включено 3300.

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


Спросил у хостера в чем может быть причина:

Проблема во множественных конкурирующих SQL запросах. Они очень сильно нагружают сервер.

Снимок MySQL процессов:

SELECT COUNT( DISTINCT p.product_id ) AS total
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 <= NOW( ) 
AND p2s.store_id = '0'
AND p.product_id
IN (
SELECT p2c.product_id
FROM product_to_category p2c
WHERE p2c.category_id = '471'
)
----------------------------

SELECT COUNT( DISTINCT p.product_id ) AS total
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 <= NOW( ) 
AND p2s.store_id = '0'
AND p.product_id
IN (
SELECT p2c.product_id
FROM product_to_category p2c
WHERE p2c.category_id = '582'
OR p2c.category_id = '579'
OR p2c.category_id = '572'
OR p2c.category_id = '571'
OR p2c.category_id = '570'
OR p2c.category_id = '569'
OR p2c.category_id = '567'
)

------------------------

SELECT COUNT( DISTINCT p.product_id ) AS total
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 <= NOW( ) 
AND p2s.store_id = '0'
AND p.product_id
IN (

SELECT p2c.product_id
FROM product_to_category p2c
WHERE p2c.category_id = '417'
OR p2c.category_id = '416'
OR p2c.category_id = '503'
OR p2c.category_id = '216'
OR p2c.category_id = '190'
OR p2c.category_id = '188'
OR p2c.category_id = '125'
OR p2c.category_id = '124'
OR p2c.category_id = '123'
OR p2c.category_id = '122'
OR p2c.category_id = '120'
)
--------------------------------------

SELECT COUNT( DISTINCT p.product_id ) AS total
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 <= NOW( ) 
AND p2s.store_id = '0'
AND p.product_id
IN (

SELECT p2c.product_id
FROM product_to_category p2c
WHERE p2c.category_id = '415'
)
---------------------------------------------

SELECT COUNT( DISTINCT p.product_id ) AS total
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 <= NOW( ) 
AND p2s.store_id = '0'
AND p.product_id
IN (

SELECT p2c.product_id
FROM product_to_category p2c
WHERE p2c.category_id = '419'
OR p2c.category_id = '418'
OR p2c.category_id = '161'
OR p2c.category_id = '156'
OR p2c.category_id = '155'
OR p2c.category_id = '149'
OR p2c.category_id = '421'
OR p2c.category_id = '121'
)
---------------------------------------

SELECT COUNT( DISTINCT p.product_id ) AS total
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 <= NOW( ) 
AND p2s.store_id = '0'
AND p.product_id
IN (

SELECT p2c.product_id
FROM product_to_category p2c
WHERE p2c.category_id = '214'
)
-------------------------------------

SELECT COUNT( DISTINCT p.product_id ) AS total
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 <= NOW( ) 
AND p2s.store_id = '0'
AND p.product_id
IN (

SELECT p2c.product_id
FROM product_to_category p2c
WHERE p2c.category_id = '419'
OR p2c.category_id = '418'
OR p2c.category_id = '161'
OR p2c.category_id = '156'
OR p2c.category_id = '155'
OR p2c.category_id = '149'
OR p2c.category_id = '421'
OR p2c.category_id = '121'
)

----------------------------------------

SELECT COUNT( DISTINCT p.product_id ) AS total
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 <= NOW( ) 
AND p2s.store_id = '0'
AND p.product_id
IN (

SELECT p2c.product_id
FROM product_to_category p2c
WHERE p2c.category_id = '419'
OR p2c.category_id = '418'
OR p2c.category_id = '161'
OR p2c.category_id = '156'
OR p2c.category_id = '155'
OR p2c.category_id = '149'
OR p2c.category_id = '421'
OR p2c.category_id = '121'
)
--------------------------------------

SELECT COUNT( DISTINCT p.product_id ) AS total
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 <= NOW( ) 
AND p2s.store_id = '0'
AND p.product_id
IN (

SELECT p2c.product_id
FROM product_to_category p2c
WHERE p2c.category_id = '361'
OR p2c.category_id = '363'
OR p2c.category_id = '353'
OR p2c.category_id = '352'
OR p2c.category_id = '351'
OR p2c.category_id = '350'
OR p2c.category_id = '349'
OR p2c.category_id = '348'
OR p2c.category_id = '347'
OR p2c.category_id = '346'
OR p2c.category_id = '345'
OR p2c.category_id = '344'
OR p2c.category_id = '343'
OR p2c.category_id = '342'
OR p2c.category_id = '341'
OR p2c.category_id = '340'
OR p2c.category_id = '339'
OR p2c.category_id = '338'
OR p2c.category_id = '337'
)

-----------------------------

SELECT COUNT( DISTINCT p.product_id ) AS total
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 <= NOW( ) 
AND p2s.store_id = '0'
AND p.product_id
IN (

SELECT p2c.product_id
FROM product_to_category p2c
WHERE p2c.category_id = '215'
)

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

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


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

                                       $product_total = $this->model_catalog_product->getTotalProducts($data);
                                                                        
                                        $children_data[] = array(
                                               'name'  => $child['name'] . ' (' . $product_total . ')',
                                               'href'  => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $
(ищите по ключевым словам $product_total или getTotalProducts)

и закомментировать вызов getTotalProducts и использование результата, т.е. исправить 2 строчки в этом блоке:

                                       // $product_total = $this->model_catalog_product->getTotalProducts($data);
                                                                        
                                        $children_data[] = array(
                                               'name'  => $child['name'], // . ' (' . $product_total . ')',
                                               'href'  => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $

Это должно быть в паре файлов (в контроллере, который занимается выводом меню, и в модуле категорий). Думаю, сами найдёте без проблем.

Если заметно полегчает (а если хостер не ошибся и это основная проблема - то должно), тогда уже можете смотреть на индексы или думать об изменении кол-ва запросов для формирования дерева категорий. Но их у вас вроде бы не слишком много.

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


to rb2

спасибо большое! спасительное решение )

to Ritter

пока полегчало.

у нас местный хостинг http://hosting.tomsknet.ru/virtual

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

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


  • 3 weeks later...
  • 9 months later...
  • 8 months later...

Такой ответ выдает хостинг по поводу медленных запросов. Как исправить?

 

 

SELECT * FROM product_option po LEFT JOIN `option` o ON (po.option_id = o.option_id) LEFT JOINoption_description od ON (o.option_id = od.option_id) WHERE po.product_id = '1601' ANDod.language_id = '1' ORDER BY o.sort_order
 
Надіслати
Поділитися на інших сайтах


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

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

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

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

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

Вхід

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

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

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

Important Information

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