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

CS-Cart v4.15.1.SP4
Unitheme v4.15.1.e

Суть проблемы:
Когда количество товаров в корзине достигает 300-500 начинает очень медленно работать добавление товара в корзину из плиток товаров со страницы категорий. С каждым разом это время увеличивается и процесс может занимать более минуты!
При пустой корзине товар добавляется за 2-3 секунды (что тоже многовато, но все привыкли).

Как воспроизвести проблему:
Просто класть товары в корзину.

На днях объявился оптовик, который сделал большой заказ и написал, что сайт ужасно тормозит при большом количестве товаров в корзине. До этого в таком объёме у нас не покупали и о проблеме известно не было.
Я проверил - проблема воспроизводится. На пятистах товарах в корзине время добавления зафиксировано 1 минута 38 секунд. В ходе процесса увеличивается расход памяти и загрузка процессора на компьютере.

Доброго!

  • Расчет доставки включен?

  • Какая у вас база данных?

  • Промоакции ест в магазине?

  • включен
  • MySQL
  • есть промоакции

MySQL - какая версия базы
Расчет доставки в ПВЗ или курьером и какие модули для доставки стоят?
Сколько промоакций?

Почистил кэш. Стало ощутимо быстрее добавляться в корзину, в районе 10-15 секунд.
Набрал 560 товаров. Появился забавный эффект - перестала работать пагинация, сортировка и переключение вида сетки на страницах категории.
Открыл сайт в режиме инкогнито, в учётную запись (где 560 товаров) не заходит, из другого браузера тоже. Колёсико крутится, потом прекращает, но ничего не происходит. В другую учётку заходит без проблем.

  • 5.7.38
  • включен только еДост, все модули доставки выключены, включен расчёт стоимости доставки на странице товара
  • включены скидки от суммы заказа
  1. Прочитайте эту статью, и смените базу. как минимум в 10 руз будет прирост.
  2. Прекратите чистить кэш.
  3. Смените сервер на сверхбыстрые диски или перейдите на рейдис
  • если хостер обновит версию, всё ли хорошо работает на настройках по умолчанию?
  • я не чищу его без причин. Это, как минимум, кладёт сайт на несколько десятков секунд.
  • спрошу хостера, есть ли возможность

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

Может ваша версия не поддерживает восьмерку, может в модулях нет поддержки и все посыпется.

На большой корзине выявил, что невозможно выйти из учётной записи. Сайт не может записать сессию в базу из-за ограничения max_allowed_packet=16Мб в MySQL на хостинге. Предложили хранить сессии в файлах.

1 лайк

если редиска доступна у хостера ))
https://www.cs-cart.ru/docs/latest/developer_guide/getting_started/configuring_cscart.html#id7

У нас все норм, добавил до 845 товаров, только пагинация грузится до 9 сек, и переключения отображения товаров до 12 сек.

А Редис где по факту будет сессии хранить, в памяти или на диске?

Детально не изучал и нагрузкой не тестировал, но вроде хранит в памяти и бэкапит в файл. я настраивал только на тесте и в конфиге правил maxmemory и maxmemory-policy.

Было бы весьма любопытно услышать мнение гуру по redis ))

Я посмотрел, что пишется в поле blob таблицы с сессиями. Там для каждого отдельного товара в корзине указаны все данные пользователя, от хэша пароля до адреса и дня рождения, 5 путей до картинки товара. Наверное, весь массив $products, я поленился сверять.
При каждом добавлении товара это всё читается из базы, преобразуется, дополняется и пишется обратно. Вот и тормоза.

@cs-cart_team @Asya
Посмотрите, пожалуйста, на эту тему.

В таблицу с сессиями действительно много всего пишется, в том числе все пункты самовывоза СДЭК.
Аналогичную проблему для талицы order_data правили в теме Таблица cscart_order_data заполняется ненужной информацией - #27 от пользователя alexa

2 лайка