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

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


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?

 

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

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


mytop ваше все!

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

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

 

 

 

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


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

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

На странице списка 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;
    }

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

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


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 на автокомлит и будет вам счастье.

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

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


12 минут назад, Yoda сказал:

 

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

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

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

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


17 минут назад, Yoda сказал:

 

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

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

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

 

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

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


30 минут назад, Padlik сказал:

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

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

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


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

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

Змінено користувачем ArtemFam
Надіслати
Поділитися на інших сайтах

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>

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

20 минут назад, chukcha сказал:

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

 

ТС пишет:

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

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

21 минуту назад, chukcha сказал:

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

 

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

Змінено користувачем ArtemFam
Надіслати
Поділитися на інших сайтах

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

откуда?

 

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

Змінено користувачем ArtemFam
Надіслати
Поділитися на інших сайтах

В 02.07.2019 в 14:46, Padlik сказал:

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

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

 

ТС пишет:

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

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

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

  • 3 weeks later...

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

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


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

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

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

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

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

Вхід

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

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

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

×
×
  • Створити...

Important Information

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