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

Жуткие тормоза (100 категорий , 10 000 товаров)


KingCrimson

Recommended Posts

Индексы строил пару дней назад

стало еще хуже

сейчас все индексы удалил

Можно уточнить что именно означает фраза "сейчас все индексы удалил"?
Надіслати
Поділитися на інших сайтах

Хотелось бы получить ответ на этот вопрос http://opencartforum...dpost__p__33491, но раз ты его игнорируеш буду считать что ты по ошибке привёл не ту функцию, а не запрос...

Попробуй такую модель категорий category.php

На сколько ресурсоёмко использовать статичный массив (как в этой модели) для категорий 5000+?
Надіслати
Поділитися на інших сайтах

индексы работают когда все ок с запросами

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

кстати интересное наблюдение - без индексов злосчастный запрос грузил 1 ядро а с индексом все 4

Yesvik - попробую вечером

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

Не плохо бы было увидеть листинг файла my.cnf

и результат выполнения http://www.day32.com/MySQL/tuning-primer.sh

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

Можно уточнить что именно означает фраза "сейчас все индексы удалил"?

были добавлены индексы для следующих полей

alter table `oc_product` add KEY `model` (`model`);
alter table `oc_product` add KEY `stock_status_id` (`stock_status_id`);
alter table `oc_product` add KEY `quantity` (`quantity`,`date_available`);
alter table `oc_product` add KEY `tax_class_id` (`tax_class_id`,`weight_class_id`,`length_class_id`);
alter table `oc_product` add KEY `sort_order` (`sort_order`);
alter table `oc_product_option_description` add KEY `product_id` (`product_id`);
alter table `oc_product_option_value` add KEY `product_option_id` (`product_option_id`);
alter table `oc_product_option_value` add KEY `product_id` (`product_id`);
alter table `oc_url_alias` add UNIQUE KEY `query` (`query`);
alter table `oc_url_alias` add KEY `keyword` (`keyword`);
alter table `oc_zone` add KEY `country_id` (`country_id`);

вот их то и удалил после того как стало еще хуже , правда куда хуже то )

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


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

Не плохо бы было увидеть листинг файла my.cnf

и результат выполнения http://www.day32.com/MySQL/tuning-primer.sh

хм...мониторил htopом загрузка винта выведена на видное место.. но что то как то не припомню ...

подниму этот глюк на тестовом хосте - там уже обращу внимание и на винт и скриптик запущу...

[mysqld]
port		= 3306
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file= /usr/libexec/mysqld/mysqld.pid
#skip-bdb 
skip-external-locking
key_buffer_size = 512M
max_allowed_packet = 16M
table_open_cache = 1024
sort_buffer_size = 128K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
net_buffer_length = 2K
thread_stack = 128K
collation-server=cp1251_general_ci
#default-character-set=cp1251
init-connect="SET NAMES cp1251"
character-set-server=cp1251
skip-character-set-client-handshake
log-slow-queries=/var/log/slow.log 
long_query_time = 1 
log-queries-not-using-indexes
Надіслати
Поділитися на інших сайтах


На сколько ресурсоёмко использовать статичный массив (как в этой модели) для категорий 5000+?

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

5000 категорий довольно редкое явление, и думаю вывод полного дерева категорий (например для superfish) рекурсивным алгоритмом нагнёт сервак не по детски...

Если хочеш - выложу тестовый дамп: 1000 категорий, 10000 товаров... потестиш и поделишся результатами.

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

вот их то и удалил после того как стало еще хуже , правда куда хуже то )

Странно... вроде ничего смертельного ты не делал... а сервак упал.

Но индекса о котором я писал ты не добавлял... Я уже не знаю как убеждать в необходимости этого индекса.

Последняя попытка:

Сделал профилирование твоего запроса с индексом, потом удалил индекс и ещё раз прогнал запрос...

post-6876-0-01879900-1320435393_thumb.png

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

подсунул Category.php что дали выше

ocstore - выдал ошибку

Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1
Error No: 1064
SELECT COUNT(DISTINCT p.product_id) AS total FROM oc_product p 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 p.product_id IN (SELECT p2c.product_id FROM oc_product_to_category p2c WHERE )

а тот что с джумлой на ктором проблемма - вроде работает и визуально быстрее (но пока не залил 10 000 товаров)

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


Странно... вроде ничего смертельного ты не делал... а сервак упал.

Но индекса о котором я писал ты не добавлял... Я уже не знаю как убеждать в необходимости этого индекса.

Последняя попытка:

Сделал профилирование твоего запроса с индексом, потом удалил индекс и ещё раз прогнал запрос...

post-6876-0-01879900-1320435393_thumb.png

как только, так сразу , попробую твою рекомендацию

просто за компом эпизодами ) посплю и за дело )

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


подсунул Category.php что дали выше

ocstore - выдал ошибку

Сначала речь идёт про OC 1.5.1.3 и запрос из лога похож на OC 1.5.1.3

Потом появляется функция из предыдущей версии...

Я указал на несходняки, но вопрос уточняющий версию остался без ответа.

А теперь появляется ocstore и запрос в ошибке нифига не из OC 1.5.1.3

Я предупреждал что есть небольшие отличия в зависимости от версии...

В который раз говорю себе - не трать время на лечение по фотографии... и всё равно периодически вляпываюсь в это дерьмо.

Надоело...

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

не переживай )

для теста был поднят ОсСтор по адресу testx.pcf1.ru

он ошибку и дает , на него пофиг , это так для кучи

проблемному opencart-у 1.5.1.3 - так же подсунул эту модель категорий , но проблемная opencart1.5.1.3 пока без 10 000 товаров (укакал я ее экспериментами ,и бекапу укакал случайно - а каталог импортировать из екселевского прайсика некогда , завтра займусь )

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


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

5000 категорий довольно редкое явление, и думаю вывод полного дерева категорий (например для superfish) рекурсивным алгоритмом нагнёт сервак не по детски...

Если хочеш - выложу тестовый дамп: 1000 категорий, 10000 товаров... потестиш и поделишся результатами.

Выложи дамп если есть возможность пожалуйста, и если есть ещё до кучи для версии 0.2.х (сейчас с ним работаю, после планирую 1.0.1 плотно заняться)
Надіслати
Поділитися на інших сайтах

Немного оптимизировал майскул

стала гораздо быстрее импортироватся (импорт из CSV этих самых 10 000 товаров и 200 категорий, импорт без инсертов - все на UPDATE) база товаров

а вот злосчастный запрос все так же медленно

[mysqld]
port		= 3306
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file= /usr/libexec/mysqld/mysqld.pid
#skip-bdb 
skip-external-locking
key_buffer_size = 1024M
key_cache_division_limit=70
max_allowed_packet = 2M
table_open_cache = 5000
table_definition_cache=5000
sort_buffer_size = 4M
read_buffer_size = 4M
read_rnd_buffer_size = 8M
net_buffer_length = 8K
thread_stack = 128K
collation-server=cp1251_general_ci
#default-character-set=cp1251
init-connect="SET NAMES cp1251"
character-set-server=cp1251
skip-character-set-client-handshake
log-slow-queries=/var/log/slow.log 
long_query_time = 1 
#log-queries-not-using-indexes
#new added param
query_cache_size =64M
query_cache_limit =64M
open_files_limit = 20000 
join_buffer_size = 3M
thread_cache_size = 8
thread_concurrency =12
myisam_sort_buffer_size = 128M
low_priority_updates=1
max_heap_table_size=128M
tmp_table_size=128M
Надіслати
Поділитися на інших сайтах


Выложи дамп если есть возможность пожалуйста, и если есть ещё до кучи для версии 0.2.х (сейчас с ним работаю, после планирую 1.0.1 плотно заняться)

А у меня хитрый дамп... в конце дампа посмотри коменты... раскомментируй запросы 1.4 и закоменти 1.5

test_data.zip

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

Немного оптимизировал майскул

стала гораздо быстрее импортироватся (импорт из CSV этих самых 10 000 товаров и 200 категорий, импорт без инсертов - все на UPDATE) база товаров

а вот злосчастный запрос все так же медленно

Индекс добавил и медленно?

Не верю!

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

  • 1 month later...

Блин, может я чего-то не понимаю, но это не может быть решением проблемы с рекурсией?

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

по сабжу: кол-во товаров не сильно влияет на скорость..

больше 100 категорий уже заметные тормоза, притом у меня из кеша читает медленнее чем из базы (кеширует помимо самой категории её seo урл)

но этой темой я не долго занимался, времени нет

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

что это? какой-то список категорий?

Углубись в суть проблемы топикстартера

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

суть проблемы мне ясна, впрочем может ты не так её понимаешь: падение производительности получения дерева категорий при большом(>100) кол-ве элементов.

вот я и спрашиваю чем вышеуказанный http://open.od.ua/check.html может в этом помочь?

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

Блин, может я чего-то не понимаю, но это не может быть решением проблемы с рекурсией?

В некоторых местах так даже удобнее, но это в основном применимо в админке...

В паблике зачастую требуется получить полное дерево категорий, например для меню типа superfish... и тогда лучше рекурсивно трепать массив, а не базу.

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

суть проблемы мне ясна, впрочем может ты не так её понимаешь: падение производительности получения дерева категорий при большом(>100) кол-ве элементов.

вот я и спрашиваю чем вышеуказанный http://open.od.ua/check.html может в этом помочь?

Так, секундочку, дерево для чего? Для вытяжки товаров из дочерних категорий, так?

А зачем это делать?

Потому что когда мы в админке ставим галку напротив самого последнего уровня категорий, то родительский (который и вызывает эту рекурсию) мы не трогаем и он вынужден сам доставать дочерние category_id для поиска всех товаров.

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

Или я неправильно понял?

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

Или я неправильно понял?

да, выходит тебе нужно "углубиться"

вот тут описана та же проблема и её причины

https://opencartforum.com/topic/5616-%d0%bc%d0%b0%d0%b3%d0%b0%d0%b7%d0%b8%d0%bd-%d0%b4%d0%be%d0%bb%d0%b3%d0%be-%d0%b3%d1%80%d1%83%d0%b7%d0%b8%d1%82%d1%81%d1%8f/page__view__findpost__p__36043

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

freelancer, эм, вообще-то это вызывается в модели товара...
Надіслати
Поділитися на інших сайтах

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

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

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

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

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

Вхід

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

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

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

Important Information

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