Новости Joomla

Человек на GitHub ускорил Joomla в 600 раз на объёме 150к+ материалов в 1700+ категориях

Человек на GitHub ускорил Joomla в 600 раз на объёме 150к+ материалов в 1700+ категориях

👩‍💻 Человек на GitHub ускорил Joomla в 600 раз на объёме 150к+ материалов в 1700+ категориях. На старте его сайт на Joomla 3 вообще не смог обновиться на Joomla 5. Пришлось делать экспорт/импорт материалов. Проделав всё это он запустил-таки этот объём данных на Joomla 5. Тестовый скрипт грузил 200 материалов из этого объёма всего за 94 секунды ))) А главная страница с категориями грузилась 20 секунд. Добавив индекс для таблицы

#__content

CREATE INDEX idx_catid_state ON #__content (catid, state);
он сократил время загрузки категорий до 1 секунды. Затем наш герой решил поковырять SQL-запрос в
ArticleModel, который отвечает за выборку материалов. И решил заменить тип JOIN на
STRAIGHT_JOIN для категорий.
// ->from($db->quoteName('#__content', 'a'))->from(    $db->quoteName('#__content', 'a')    . ' STRAIGHT_JOIN ' . $db->quoteName('#__categories', 'c')    . ' ON ' . $db->quoteName('c.id') . ' = ' . $db->quoteName('a.catid'))// ->join('LEFT', $db->quoteName('#__categories', 'c'), $db->quoteName('c.id') . ' = ' . $db->quoteName('a.catid'))
Что сократило загрузку 200 материалов из 150к с 94 секунд до 5. К слову сказать, боевой сайт на Joomla 3 крутится на 12CPU 64GB рамы. А все манипуляции с кодом он делает на базовом 1CPU 1GB сервере и замеры скорости даны именно для базового сервера. Но это всё в дискуссии, хотя в идеале должно вылиться в Pull Requests. Мы - Open Source сообщество, где никто никому ничего не должен. Джунгли. Но человек ищет пути оптимизации Joomla и предлагает решения. Если оказать поддержку и предложить помощь хотя бы с тестированием самых разнообразных сценариев, то возможно эти улучшения смогут войти в ядро. Пусть не быстро, пусть через несколько лет, пусть не все, но войдут. Достаточно предложить руку помощи и приложить немного усилий.
Дискуссию на GitHub можно почитать здесь.@joomlafeed#joomla #community #php

0 Пользователей и 1 Гость просматривают эту тему.
  • 7 Ответов
  • 2534 Просмотров
*

slepoy

  • Давно я тут
  • 753
  • 24 / 0
  • Тотальная шизофазия
Здравствуйте.

После переноса сайтов на виртуальный сервер, возникла проблема: в полноч (по МСК) сайты выдают ошибку 504 Gateway Time-out nginx/1.2.1 в течение 10-15 минут.

Тех.поддержка любезно оказала помощь, н ос тех пор полезли различные Warning'и и заметно снизилась скорость загрузки сайта:
Цитировать
1. Установил акселератор и кеширующий модуль для PHP, это должно помочь.
2. Понизили приоритет создания резервных копий. Надеемся, это поможет решить проблему.
3. Вижу огромное число ошибок в логах Apache. За день накапливается до 17Gb, в связи с чем ротация становится трудоемким процессом. Скорректировал настройки, более ошибок не видно. Пожалуйста, проверьте.
4. Так же обновили APC до актуальной версии, прошлое решение помогло не до конца. Сейчас должно быть все хорошо.
5. apc.shm_size был выставлен больше чем разрешен в kernel.shmmax, увеличил ограничение.
6. Похоже до этого были проблемы с нехваткой памяти. Установил мониторинговую утилиту atop, теперь раз в 10 минут она будет записывать статистику в журнал.
7. Судя по логу atop в это время была повышена нагрузка, основную ее массу давали php скрипты от пользователя slepoy и MySQL.
Внес изменения в конфигурацию MySQL, согласно рекомендациям mysqltuner.
Кроме того, у Вас используются joins, без индексов, необходимо проиндексировать поля таблиц, для которых производятся join запросы.
Я бегло прочел несколько статей про JOIN, не имеющих отношения к Joomla, но не нашел ничего, что могло бы сподвигнуть меня на конкретный шаг к сработе с БД. Возможно вы подскажете? Спасибо.

п.с: удивительно, что провайдер за 2 недели наблюдения проблемы не предложил сменить тарифный план.
« Последнее редактирование: 29.01.2014, 00:13:09 от slepoy »
Помог? Поставь(те) плюс в репутацию.
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
То что в цитате - это ответ от хостера?
Можно его имя в студию?
Насчет тяжелых запросов - надо смотреть какие именно таблицы и модифицировать их, создав индексы на нужные поля.
*

slepoy

  • Давно я тут
  • 753
  • 24 / 0
  • Тотальная шизофазия
Имя: http://fastvps.ru/
Насколько я понял, ознакомившись с правилами/условиями предоставления услуг, все проблемы виртуального сервера ложатся на меня, но тех.поддержка любезно оказывала помощь в разрешении различных проблем и вопросов возникших после переезда сайта на fastvps. Однако возникла вышеуказанная "полуночная проблема". При всем при этом посещаемость снизилась на 20% (не важно по каким причинам т.е. нагрузка по идее не должна была возрасти.), решение которой, как я написал, привела к появлению Warning'ов и медленной работе сайтов.

В цитате я лишь указал конкретные действия работников тех.поддержки, исключив иные моменты переписки. Иными словами, было, грубо говоря, 7 "предложений", которые я согласовал, просьбой выполнить их (либо попросил помощи в из выполнении и она была оказана). Просто после последнего ответа
Цитировать
у Вас используются joins, без индексов, необходимо проиндексировать поля таблиц, для которых производятся join запросы.
Я бы мог и дальше просить помощи, но решил сперва спросить у вас - возможно мне следует взяться за голову и решить проблему на уровне BD, phpMyAdmin и Joomla? Не думаю, что не имея опыта в "управлении" сервером смогу это сделать.

Цитировать
Насчет тяжелых запросов - надо смотреть какие именно таблицы и модифицировать их, создав индексы на нужные поля.
Хотелось бы узнать как.
Спасибо.
Помог? Поставь(те) плюс в репутацию.
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Хотелось бы узнать как.
Спасибо.
Включить отладку, там показываются запросы.
Но время выполнения вроде еще не пишется - тут на форуме был хак отладки, чтоб писалось время (может даже я дополнял, но уже не помню).
И аналазировать долгие запросы.
*

slepoy

  • Давно я тут
  • 753
  • 24 / 0
  • Тотальная шизофазия
Включил отладку.
В разделе "Запросы к базе данных" отображено 506 запросов (еслине логиниться). Из них 48 содержат JOIN. Например:
Цитировать
SELECT m.id, m.menutype, m.title, m.alias, m.note, m.path AS route, m.link, m.type, m.level, m.language,m.browserNav, m.access, m.params, m.home, m.img, m.template_style_id, m.component_id, m.parent_id,e.element as component
  FROM j25_menu AS m
  LEFT JOIN j25_extensions AS e
  ON m.component_id = e.extension_id
  WHERE m.published = 1
  AND m.parent_id > 0
  AND m.client_id = 0
  ORDER BY m.lft
Цитировать
SELECT b.id
  FROM j25_usergroups AS a
  LEFT JOIN j25_usergroups AS b
  ON b.lft <= a.lft
  AND b.rgt >= a.rgt
  WHERE a.id = 1

В данной статье прочел общую информацию о создании индексов: http://myrusakov.ru/mysql-index.html

Цитировать
тут на форуме был хак отладки, чтоб писалось время
Т.е. мне следует создать индексы для таблиц/запросов, которые выполняются очень долго?
Спасибо.
« Последнее редактирование: 08.12.2013, 16:24:18 от slepoy »
Помог? Поставь(те) плюс в репутацию.
*

flyingspook

  • Живу я здесь
  • 3590
  • 247 / 9
посмотрите для начала через top, что и сколько памяти потребляет, ну и подцепите лог MySQL
*

slepoy

  • Давно я тут
  • 753
  • 24 / 0
  • Тотальная шизофазия
Проблема все еще актуальна.

Дежурный работник провайдера понаблюдал в полночь за проблемой и ответил:
Цитировать
основную нагрузку сейчас дает ротация логов и php процессы под пользователем slepoy
Также ранее сообщали:
Цитировать
В полночь должны запускаться по cron и задания на ротацию логов.

Можно ли что-то в этом случае предпринять? Если выполнить действие мне по силам, как верно сформулировать запрос-просьбу для обращения к провайдеру?

Спасибо.
Помог? Поставь(те) плюс в репутацию.
*

flyingspook

  • Живу я здесь
  • 3590
  • 247 / 9
а что у вас посещаемость такая большая? 10000 и более?
как вариант не зная ваших характеристик сервера совет один взять мощнее
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Тормозит сайт. Нужен другой хостинг

Автор Stihao

Ответов: 8
Просмотров: 3539
Последний ответ 08.06.2025, 09:02:51
от azm1n
Не получаетса перенести сайт

Автор leha111

Ответов: 6
Просмотров: 1243
Последний ответ 13.06.2018, 16:33:07
от blik
Где размещен сайт?

Автор web3.0

Ответов: 5
Просмотров: 1403
Последний ответ 25.11.2017, 19:59:14
от wishlight
Каждую субботу тупит сайт или сервер

Автор vitzer

Ответов: 23
Просмотров: 2062
Последний ответ 12.03.2017, 06:55:29
от vipiusss
Сайт созданный на CMS Joomla открывается в браузере только с вкл. VPN!

Автор serg7630

Ответов: 3
Просмотров: 1965
Последний ответ 20.10.2016, 18:44:23
от serg7630