Акция!  Домен 34 грн, домен 55 грн, домен  - 200 грн домен  - 65 грн, домен  - 99 грн, домен  - 56 грн!, домен  - 425 грн!
Мы используем cookie-файлы
Для оптимизации работы нашего сайта мы используем cookie-файлы. Продолжая использовать сайт, Вы соглашаетесь с использованием cookie-файлов.
  • RUB
  • USD
  • EUR
  • UAH
Чат техподдержки
Вы являетесь клиентом?
  • +38(044) 392-74-33  Киев
  • +38(057) 728-39-00  Харьков
  • +38(056) 794-38-31  Днепр
  • +38(032) 229-58-93  Львов
  • +38(048) 738-57-70  Одесса
  • +38(093) 170-15-42  Life
  • +38(067) 400-88-44  Киевстар
  • +38(095) 630-90-82  MTC
  • +1(888)393-24-51  USA, Toll free
  • +44(131)507-01-14  Great Britain
  • +7(499) 348-28-61  Москва

CMS Opencart. Opencart 3x на и пакет Лучший SSD проблемы в работе

Форумы CMS Opencart Opencart 3x на и пакет Лучший SSD проблемы в работе
a-lex
4 месяца
хостинг: есть
домен: есть
Opencart 3x на и пакет Лучший SSD проблемы в работе
Столкнулся с тем что поставил на пакет "Лучший SSD" opencart c кастомной темой. Испытывал большие проблемы с перегрузом -> нашел косяки в теме -> оптимизировал тему.. но ошибки превышения запросов(процессорного времени остались). Переключился на стандартную тему opencart 3x и то же сайт падает и потребляет достаточно ресурсов.

Кто-то сталкивался с таким?

Ошибка:

Warning: mysqli::__construct(): (HY000/1226): User DB_name'' has exceeded the 'max_user_connections' resource (current value: 45) in
../system/library/db/mysqli.php on line 7Warning: DB\MySQLi::__construct(): Couldn't fetch mysqli in
../system/library/db/mysqli.php on line 10Warning: DB\MySQLi::__construct(): Couldn't fetch mysqli in
../system/library/db/mysqli.php on line 10

Смотрел по форума на всякий случай сменил SQL движок MyISAM (Default) на InnoDB но по дефолту на этом пакете MyISAM.

Просто первый раз сталкиваюсь с такой проблемой....
toxi
4 месяца
хостинг: есть
домен: есть
Судя по ошибке, Сайт устанавливает слишком много подключений к БД и тем самым упирается в лимит. Возможно в магазине слишком много позиций либо используются тяжелые плагины
a-lex
4 месяца
хостинг: есть
домен: есть
Из плагинов экспорт/импорт и доп. описание категорий) Товаров 2300 шт. Я вот почитал что там сам опенкарт 3й требователен к бд. По коду смотрю там запросы в цикле выводит.
Илья
4 месяца
хостинг: есть
домен: есть
Из плагинов экспорт/импорт и доп. описание категорий) Товаров 2300 шт. Я вот почитал что там сам опенкарт 3й требователен к бд. По коду смотрю там запросы в цикле выводит. © a-lex

Судя по ошибке - у вас 45 одновременных соединений с БД, это количество соответсвует огромному проекту, с десятками тысяч посетителей. Или же лажа с каким-то запросом, который слишком долго выполняется. Выполняйте команду
SHOW FULL processlist
и смотрите какие запросы висят.
a-lex
4 месяца
хостинг: есть
домен: есть
Посмотрел:

Вот такие вот запросы умирают


SELECT
p.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)
WHERE
pd.language_id = '2' AND
p.status = '1' AND
p.date_available <= NOW() AND
p2s.store_id = '0' AND
cp.path_id = '129'
GROUP BY p.product_id
ORDER BY p.date_added DESC, LCASE(pd.name) DESC
LIMIT 0,20


SELECT COUNT(DISTINCT 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)
WHERE pd.language_id = '2' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND cp.path_id = '157
Илья
4 месяца
хостинг: есть
домен: есть
Вот такие вот запросы умирают © a-lex


Запросы кривые. Выполните эти два запроса с приставкой EXPLAIN и бросьте скриншоты, может где индекса нехватает.
a-lex
4 месяца
хостинг: есть
домен: есть
SELECT COUNT(DISTINCT 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)
WHERE pd.language_id = '2' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND cp.path_id = '157

этот запрос победил
a-lex
4 месяца
хостинг: есть
домен: есть
- а вот что по второму
a-lex
4 месяца
хостинг: есть
домен: есть
SELECT DISTINCT *, pd.name AS name, p.image, m.name AS manufacturer, (SELECT price FROM " . DB_PREFIX . "product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' 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 " . DB_PREFIX . "product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' 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, (SELECT points FROM " . DB_PREFIX . "product_reward pr WHERE pr.product_id = p.product_id AND pr.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "') AS reward, (SELECT ss.name FROM " . DB_PREFIX . "stock_status ss WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = '" . (int)$this->config->get('config_language_id') . "') AS stock_status, (SELECT wcd.unit FROM " . DB_PREFIX . "weight_class_description wcd WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = '" . (int)$this->config->get('config_language_id') . "') AS weight_class, (SELECT lcd.unit FROM " . DB_PREFIX . "length_class_description lcd WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = '" . (int)$this->config->get('config_language_id') . "') AS length_class, (SELECT AVG(rating) AS total FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT COUNT(*) AS total FROM " . DB_PREFIX . "review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews, p.sort_order 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_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN " . DB_PREFIX . "manufacturer m ON (p.manufacturer_id = m.manufacturer_id) WHERE p.product_id = '" . (int)$product_id . "' AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id')

Есть вот ещё такой монструозный запрос получения продукта....
Участвовать в общении на этом форуме могут только
зарегистрированные пользователи.

Если вы уже зарегистрированы Вам необходимо войти на форум.