Jump to content
Sign in to follow this  
Padlik

Долгая загрузка списка товаров в админке

Recommended Posts

Добрый день!

 

Версия движка 1.5.1.3. Импортировал около 50 тысяч товаров и 10-15 тысяч категорий. На фронте полет нормальный, страницы загружаются быстро. В админке проблема - при переходе Каталог - Товары - длительность загрузки страницы достигает 30-40 секунд. В логах медленных запросов пусто. Поставил профайлер запросов, чтобы проверить что создает нагрузку. Так вот при переходе на вышеуказанную страницу запрос и время обработки просто мизерное:

 

totalProcessTime - 0.6812379360199 sec
Queries - 51.
Queries time - 0.50532507896423.

 

Веб-сервер организован в связке apache + nginx. Апач работает в режиме fastcgi, версия php 5.4.16. Это не виртхост и не впс, это своя железка, 16Гб оперативки, процессор Core i-7 и 2ТБ диска. Atop периодически показывает высокую нагрузку на mysql. Но при этом в профайлере и в логах пусто. 

 

Остальные страницы админки открываются без проблем. Vqmod не используется. Есть сильные подозрения, что длительная загрузка обусловлена большим количеством категорий, т.к. модули, где присутствует вывод категорий в админке немного тупят, но не критично, не так как на странице товаров.

 

Прошу подсказать, в какую сторону смотреть. Файл модели категории оригинальный, убрал из запросов выборку языка и магазина. Не помогло. Может быть на сервере подкрутить какие-то директивы для php?

 

Буду благодарен любому совету.

Share this post


Link to post
Share on other sites

mytop ваше все!

Так как неизвестно какие кривые руки писали профайлер. И на каком уровне он обрабатывает запросы.

Также смотрите в код - если у вас где то на товары перебираются из php-массива принадлежность к категориям - то это даже 20 x 10 000 итераций. Что может убивать производительность на уровне самого php.

 

 

 

Share this post


Link to post
Share on other sites

вероятно тормозит не бд, а php

Share this post


Link to post
Share on other sites

Сколько товаров на странице списка
Как выглядит сам список?
Может там грузится огромный селект выбора категорий и производителей
И другие плюшки

Share this post


Link to post
Share on other sites

На странице списка 20  товаров. Да, грузится селект по категориям и на него я тоже думал, для эксперимента убрал выборку по категориям из списка товаров - стало сильно лучше работать. Конечно, можно вообще все фильтры убрать - тогда будет еще лучше, но тогда работать будет с товарами вообще проблемно. Пытался переходить на php версиями выше. Никаких результатов. Посмотрел кусок кода из файла модели

    public function getProductsByCategoryId($category_id) {
        $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id) WHERE  p2c.category_id = '" . (int)$category_id . "' ORDER BY pd.name ASC");
                                  
        return $query->rows;
    }

Вроде бы тоже ничего криминального.

Share this post


Link to post
Share on other sites
3 минуты назад, Padlik сказал:

На странице списка 20  товаров. Да, грузится селект по категориям и на него я тоже думал, для эксперимента убрал выборку по категориям из списка товаров - стало сильно лучше работать. Конечно, можно вообще все фильтры убрать - тогда будет еще лучше, но тогда работать будет с товарами вообще проблемно. Пытался переходить на php версиями выше. Никаких результатов. Посмотрел кусок кода из файла модели

    public function getProductsByCategoryId($category_id) {
        $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id) WHERE  p2c.category_id = '" . (int)$category_id . "' ORDER BY pd.name ASC");
                                  
        return $query->rows;
    }

Вроде бы тоже ничего криминального.

 

Поменяйте select на автокомлит и будет вам счастье.

Судя по всему у вас не скрипт магазина тормозит, а непосредственно рендеринг выпадающего списка в браузере.

Share this post


Link to post
Share on other sites
12 минут назад, Yoda сказал:

 

Поменяйте select на автокомлит и будет вам счастье.

Судя по всему у вас не скрипт магазина тормозит, а непосредственно рендеринг выпадающего списка в браузере. 

А есть альтернативные варианты использования автокомплита? Построение списка категорий используется еще в ряде модулей, стал ковырять и реально заметил, что там, где категории выводятся списком select - заметны сильные тормоза. Например, в модуле выгрузки на маркет или в батче.

Share this post


Link to post
Share on other sites
17 минут назад, Yoda сказал:

 

Поменяйте select на автокомлит и будет вам счастье.

Судя по всему у вас не скрипт магазина тормозит, а непосредственно рендеринг выпадающего списка в браузере. 

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

 

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

Share this post


Link to post
Share on other sites
30 минут назад, Padlik сказал:

А есть альтернативные варианты использования автокомплита? Построение списка категорий используется еще в ряде модулей, стал ковырять и реально заметил, что там, где категории выводятся списком select - заметны сильные тормоза. Например, в модуле выгрузки на маркет или в батче.

Это к авторам модулей.

Share this post


Link to post
Share on other sites

На 50к товаров 10-15к категорий - не многовато категорий?

Share this post


Link to post
Share on other sites
1 час назад, ArtemFam сказал:

Может тормозит javascript на странице, вполне может ajax блокировать. Известный трабл с блокированием php-сессий.

https://rmcreative.ru/blog/post/blokirovanie-sessiy-v-php

Где вы видели sleep
какое еще блокирование
 

 

В 02.07.2019 в 14:01, chukcha сказал:

Может там грузится огромный селект выбора категорий и производителей

Судя по всем вот причина

 

 

В 02.07.2019 в 12:34, Padlik сказал:

Импортировал около 50 тысяч товаров и 10-15 тысяч категорий.

@ArtemFam вы пробовали из 1015к выбрать из базы  и сделать <select>

Share this post


Link to post
Share on other sites
20 минут назад, chukcha сказал:

вы пробовали из 1015к выбрать из базы  и сделать <select>

 

ТС пишет:

totalProcessTime - 0.6812379360199 sec
Queries - 51.
Queries time - 0.50532507896423.

Share this post


Link to post
Share on other sites
Posted (edited)
21 минуту назад, chukcha сказал:

какое еще блокирование

 

Блокирование php-сессии. sleep там для примера.

Edited by ArtemFam

Share this post


Link to post
Share on other sites
Только что, ArtemFam сказал:

Блокирование php-сессии.

откуда?

Share this post


Link to post
Share on other sites
Posted (edited)
2 минуты назад, chukcha сказал:

откуда?

 

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

Edited by ArtemFam

Share this post


Link to post
Share on other sites
В 02.07.2019 в 14:46, Padlik сказал:

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

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

 

ТС пишет:

totalProcessTime - 0.6812379360199 sec
Queries - 51.
Queries time - 0.50532507896423.

Выборка прошла быстро
Далее - формирование массивов, и отдать селект в 15к и отрисовать в барузере

Share this post


Link to post
Share on other sites

Добрый день. У меня перестала работать программа ваша и мне нужен сео специалист-программист.  Я несколько раз писала  в личные сообщения, но вы не отвечаете,  Программист тоже потерялся и не выходит на связь. Помогите найти нового программиста или помогите сами. Спасибо за понимание. 

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.