WooCommerce работает медленно со многими категориями

Я немного борюсь с WooCommerce (и WordPress), который немного медленный. У меня есть магазин разработки для клиента со следующими характеристиками

5,319 Продукты 2,437 Категории продуктов

Категории являются такими иерархическими, как this / product-category / by-model / accord-ch1-1998-2003 / body / accessories / Стандартная / магазин / страница (показывающая только подкатегории) занимает 14 секунд для загрузки.

Пройдя по категориям, каждый занимает меньше времени для загрузки. / product-category / by-model / требуется 6 секунд для загрузки. / product-category / by-model / accord-ch1-1998-2003 / требуется 1,5 секунды для загрузки. / product-category / by-model / accord-ch1-1998-2003 / body / требуется 1,5 секунды для загрузки.

Ни одна из этих категорий не содержит продуктов, а только подкатегорий.

И наконец / product-category / by-model / accord-ch1-1998-2003 / body / accessories / первая категория с любыми продуктами занимает более респектабельное 600 мс для загрузки.

Принимая для загрузки == время до первого байта – как только сервер отправляет данные, у нас есть DOM готовые миллисекунды позже. Полезная нагрузка темы составляет около 500 Кб на страницу.

Я был уверен, что проблема связана с безумным количеством запросов SQL, которые он делает в категориях более высокого уровня. Прежде чем отправлять это сообщение, я переместил сайт из его оригинального дома на низкоразрешающем, общем сервере Dell R410 на VPS на аналогичном оборудовании, чтобы я мог немного поработать с apache или MySQL. Производительность сервера хорошая. Нагрузка низкая.

Я пробовал использовать расширенный кеш и кэш объектов (как на основе memcache), так и я не вижу большого выигрыша. Когда я смотрю общий журнал MySQL, я вижу, что эти массивные запросы проходят. Ни один из них не медленный в соответствии с медленным журналом запросов, я могу только предположить, что это их простое число, или его объединения в таблицах таксо. Кэширование SQL также включено, но, похоже, тоже мало помогает.

(Все остальные страницы загружаются быстро, только эти категории Woo вызывают проблемы).

Используя SQL Profiler, я не думаю, что это медленный SQL, а больше PHP занимает ~ 100% загрузки процессора, а WooCommerce что-то делает.

Общее время запроса: 0.09768s для 89 запросов. Страница сгенерирована в 15.40064s (99.37% PHP, 0.63% MySQL)

Кто-нибудь раньше испытывал такое поведение? У меня быстро заканчиваются идеи!

редактировать

Я уверен, что это связано с переходом Woo на ненужные термины. Домашняя страница магазина (/ shop /) делает запрос, подобный этому http://pastebin.com/jsiaYenq TWICE! Что возвращает ~ 13 000 строк.

Другой подобный запрос http://pastebin.com/B9xhFLFe возвращает почти такое же количество строк.

SQL быстро возвращает эти запросы, однако NewRelic доказывает, что WooCommerce пытается что-то сделать с этими массивными наборами данных, которые потребляют 100% процессора и занимают ~ 25 секунд.

Новая реликвия показывает, что приложение находится на стадии «woocommerce» в течение длительного времени. NewRelic

Я убежден, что это проблема!