Получил это разобрал. Кажется, что в SQL-запросах, открытых командой OC, есть «новый» подход, и его следует называть «DDoS самостоятельно до смерти».
Базовая база теперь выросла до 37 тыс. Изделий в 129 категориях (от 18 тыс. За ночь, lol ... не должна была налагать автоматические сценарии импорта и давать их ламерам ...) и время загрузки выросли с 6-12 секунд до 20-25 секунд, сильно ударяя по SQL-серверу:
[quote] Вопросов начиная с запуска: 514,064,911 (вопрос с момента запуска) ø в час: 1,301,788 (ques avg за час) ø в минуту: 21,696 (Ques сред для мин) ø в секунду: 362 (Ques сред для второй) [/ quote]
Это не нормально, так как есть 2 пользователей в системе - автоматизированный сценарий (ограниченный - 30 кет в секунду, затем sleep (1)) и меня (362-30 = 332 запросов в секунду? от людей? WTF devs?). На основе этой статистики OC таким образом потребуется серьезная ферма серверов, чтобы одновременно обслуживать более 500 пользователей. Не произойдет. Не в этой жизни.
Я занимаюсь различными сайтами и переписал почти все из них. Мой самый посещаемый сайт (200 тыс. Посещений в день) генерирует «только» 2,5 млн. Запросов в день. И это тяжело (содержание), поверьте мне. Если OC был загружен одинаково (просмотры 200 тыс.), Это означало, что в день будет 100-120 млн. Запросов.
ТАКЖЕ запросы не так уж и мудры, что дает серверу трудные времена с ORDER BY (как я подозревал) и SELECT DISTINCT (боль !!!).
ТАКЖЕ существует множество вариантов, заданных для каждого запроса, независимо от того, установлены они пользователем или нет (сортировка, заказ и т. Д.). Это делает запросы как 4-5 раз дольше, чем ожидалось, даже если пользователь не хочет, чтобы какой-либо порядок сортировки (ASC, DESC и т. Д.)
ТАКЖЕ есть вопросы, написанные таким плохим образом, что меня забавляет. Как вы могли бы вытащить общее количество для что-нибудь с помощью 5 phps и 3 запросов, если вы можете сделать простую 1 строку «SELECT COUNT (*) FROM ...»? Команда OC, похоже, не заботится о времени выполнения и нагрузках на сервер.
Я хотел бы извиниться, если кто-то оскорблен тем, что я написал, но в моем случае я прав: весь подход ошибочен для достижения целей (быстрое исполнение на 37 тыс. Продуктов/129 кошек). OC может быть хорошим для кого-то с 2 категориями и 50 продуктами (lol?). Не знаю. И я, вероятно, не узнаю.
В качестве INFO - кэширование - это не решение. Кэширование на стороне сервера достаточно. Что-то кроме этого означает, что у вас серьезные проблемы с кодированием. Так что не ... Я буду повторять НЕ ПОКУПАЙТЕ модули кеширования. Они скрывают проблемы, а не решают их. Если модуль кэширования может скрыть проблему на 40k-продуктах, он не сможет сделать это в продуктах 140k. Вам понадобится модуль кэширования для модуля кэширования, lol.
Теперь, к решению. Простой способ. Мы изменим только основные проблемы. Я не буду объяснять модификации que, которые я сделал в своей версии, потому что они во многих файлах и имеют решающее значение, если вы не понимаете, что вы делаете (вы можете потерять возможности OC, которые вы хотели бы сохранить, в то время как я не забочусь о них о вариантах, если сайт загружается на полминуты). Так что - незначительные модификации ТОЛЬКО.
Wil say - пояснил для версии 1.5.5.1. Средства - нет модов. После модификации вы потеряете левый блок с категориями, но ваш сайт загрузит ДЕЙСТВИТЕЛЬНО FAST (37 тыс. Продуктов/129 кошек -> 0,137 секунды в сумме 5 нагрузок, расстояние до сервера - 200 миров)
0) РЕЗЕРВНЫЙ ВАШ сайт. Мы будем изменять файлы. Вы могли бы сделать ужасный беспорядок. И плачь потом.
1) Получить/каталог/контроллер/продукт/категорию.PHP поиск строки: 184
должен содержать: $product_total = $this->model_catalog_product->getTotalProducts($data);
Заменить: //$product_total = $this->model_catalog_product->getTotalProducts($data);
Описание: Комментирование рассчитывать категории, как это занимает довольно DAMD много сосчитать продуктов в 129 категориях (129 запросов WTF.? ?)
2) Получить /catalog/controller/product/category.php Find линии: 187
должна содержать: 'name' => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $product_total . ')' : '')
,
Заменить: 'name' => $result['name'],
Описание: Очистка - нет счетчика, чтобы показать в категориях, так как мы не `сосчитать их больше.
3) Получить /catalog/controller/product/category.php Find линии: 388 должна содержать: 'common/column_left',
Заменить: // 'common/column_left',
Описание: поколение Skippng из левой колонки в категории Посмотреть.
4) Получить /catalog/controller/product/product.php Find линии: 463 должна содержать: 'common/column_left',
Заменить: // 'common/column_left',
Описание: поколение Skippng в левой колонке с точки зрения продукта ,
5) Получить /store/catalog/view/theme/default/template/product/product.tpl Find линии: 1
должен содержать: <?php echo $header; ?><?php echo $column_left; ?><?php echo $column_right; ?>
Заменить: <?php echo $header; ?><?php echo $column_right; ?>
Описание: Удаление левой колонки из темы - просмотр продуктов.
6) Получить /store/catalog/view/theme/default/template/product/category.tpl Find линии: 1
должен содержать: <?php echo $header; ?><?php echo $column_left; ?><?php echo $column_right; ?>
Заменить: <?php echo $header; ?><?php echo $column_right; ?>
Описание: Удаление левой колонки из темы - просмотр каталога.
СОВЕРШЕННО. Проверьте скорость загрузки. Должно быть довольно удивительно, если ваша проблема была похожа на мою.
ПРИМЕЧАНИЕ. Обратите внимание, что я не знаком с версией OC и не использовал ее раньше. Поскольку мы решили часть проблемы, она не полностью решена. Это временное решение. Удаление деталей, которые вызывают медленную нагрузку, является решением, пока вы не напишете их снова, на этот раз, надеюсь, лучше. Я готов переписать его, если кто-то хочет превзойти моего начальника. Я могу взять отпуск и работать для вас:) Моя оплата в настоящее время 4700 € в неделю.Понимание и переписывание этого левого столбца правильным образом не должно занимать более 1-2 рабочих дней.
PP. Будет опубликован это в нескольких местах, потому что я не думаю, что команда разработчиков OC понравится, что они прочитали, независимо от того, что я не собираюсь их обижать - просто указать на критические ошибки, которые они совершили (время загрузки 25.31 avg для каждой страницы в тестах - ни один клиент не будет ждать более 3-4 секунд, прежде чем отправиться на другой сайт! Dafuq?). И, не позволяя мне публиковать эту информацию, люди не знают, как выйти из проблемы, и пойти на покупку «модуля кэширования», который фактически держит файлы на жестком диске, как дикие. Отходы денег, отходы ресурсов жесткого диска, отходы электричества ... и все это - для создания иллюзии все работает нормально, а это не так.
Я знаю, что есть ответы на некоторые вопросы, но что-то, что действительно помогает, имеет выделенный серверный сервер и выделенный сервер базы данных. – TheBlackBenzKid