Как избавиться от тормоза каталога?
#11
Posted 06 December 2014 - 16:06
Пока вижу следующие тяжелые вещи.
1. У вас 27 типов материалов и порядка 11500 материалов.
2. На каждый тип материала сделаны свои шаблоны в итоге только настройки позиций на диске ~700кб http://llfl.ru/em90cl
В памяти это займет почти 4мегабайта, на парсинг такого файла у PHP уйдет порядка 50мс
3. + настройки всех типов суммарно 330кб http://llfl.ru/ut9jbi, в памяти займет 1,5-2Мб
4. Миниатюры картинок сохраняются в одну папку /cache/com_zoo/images
http://llfl.ru/h07vrl
При проверке ресайзром существование миниатюры начинает откровенно тупить уже файловая система сервера.
Примерно после 4-5 тысяч файлов в одной(!) папке ФС начинает тормозить. Сейчас на любую миниатюру тратится порядка 10-12мс, вместо 1-2
5. Такая же история была с кешем прайсов, я их разделил по типам, стало чуть проще. Но этого мало.
6. Сервер хороший. Я бы использовал PHP 5.5, Т.к начиная с этой версии опкодкешер был встроен в ядро php/
7. Почти в каждом тизере вот такая картина. http://llfl.ru/b7f71g
Думаю вы и так знаете что элемент цены - штука тяжелая. А тут он выводится по 5-6 раз, а можно было 1, максимум 2.
В итоге на цену тратится не 5 мс, а в 5-6 раз больше и умножим на 24 тизера. Математика говорит что это в теории дает порядка 400 лишних мс + ерунда с картинками + 10 каждый тизер
---
Что можно победить по моему
- облегчить кеш картинок, разделив его на папки
- сделать 1 цену на весь тизер со всеми элементами и лучше изобрести некрасивый костыль css (например перетащить кнопку в нужное через абсолют) вместо нагрузки на сервер.
- посмотреть как открываются конфиги материалов и позиций. Если это делается несколько раз, то поставить хак.
- я бы еще перенес кеш сайта на RAM диск.
Сейчас страницы грузятся порядка 600-1200 мс, что терпимо, но конечно напрягает.
Теоретически можно ускорить примерно на 30%
без кеш точно не обойтись.
----------------------------------------
я еще не смотрел других частей сайта, мне еще нужно время до завтра
написал вам чтобы не томить ожиданием.
попробую некоторые вещи, напишу сработало ли
Отключайте проверку лицензий как можно скорее!
— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.
#12
Posted 06 December 2014 - 16:27
Спасибо.
По поводу многих типов товара - это очень удобно девочке, которая сидит на прайсах. Я давно использую редактирование через фронт элементов а теперь это еще и ZOO сам влепил и стало удобнее. Когда видно только один тип товара - это гораздо удобнее по полям править. Так же экспорт идет полегче (хотя несколько тысяч товаров все равно только по отдельным полям можно выцепить нормально)
А как кеш поделить на папки?? у меня в наследство от виртуемарта осталась структура с 99999+ файлов в одной папке .. я ее так и назвал trash в которой храняться все все картинки каталога.на данный момент я так и не определился как их поделить по папкам.
2. На каждый тип материала сделаны свои шаблоны
А как это решить?? перенести в корень в шаблон по умолчаню и удалить соответствующие папки шаблонов? и все решит?
Я бы использовал PHP 5.5,
Решу вопрос с ионкубом на пятой версии - переползу на нее.
По поводу цены подумаю. Просто у меня изначально требовали то так то этак выводить цену, три валюты и хаотичные желания клиента.. я попробую переделать это все на один элемент с выводом трех валют сразу.
вбщем поработаем над оптимизацией.
#13
Posted 06 December 2014 - 16:40
Пока ничего не предпринимайте по ускорению, я досмотрю до конца и что-то внутренее сделаю сам.
А как это решить?? перенести в корень в шаблон по умолчаню и удалить соответствующие папки шаблонов? и все решит?
Скорее всего никак не решить, просто стоит понимать, что скорость от этого тоже зависит. Насколько смертельно, сказать точно не могу.
А как кеш поделить на папки?? у меня в наследство от виртуемарта осталась структура с 99999+ файлов в одной папке .. я ее так и назвал trash в которой храняться все все картинки каталога.на данный момент я так и не определился как их поделить по папкам.
Влияет именно папка кеша, а тормозит именно любое обращение к файлу.
Т.е после ресайза будет обращение именно к кешу а не оригиналу.
--------
Кстати, кстати...
8. У вас размер realpath_cache_size в php.ini очень маленький. Увеличьте до 4мб
сейчас он 16 кб, это ужасно.
Опция отвечает за любые манипуляции с файлами, должна ускориться работа CMS в целом, т.к задействовано много include php файлов
9. И узнайте у хостера, включен ли open_basedir.
Если да, то лучше отключить. Опция заставляет проверять любой файл на сайте, что он находится в определенной папке.
пока все... посмотрю и потом еще что-нить умного скажу =)
Отключайте проверку лицензий как можно скорее!
— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.
#14
Posted 06 December 2014 - 20:34
php_flag output_buffering off
open_basedir no value
и
На 5.5. ион ставить отказались почему то.. так что придется сидеть на 5.4 но могу управлять модулями через C-panel ... у меня доступен к стати мемкеш, но он педалит если его включить. можно тоже его глянуть.
#15
Posted 06 December 2014 - 21:36
И еще вопрос. По поводу цены. Я отключил цену сделав ее в настройках типа для зарегистрированных. Она из тизеров пропала, но тормоза как бы.. не сильно то и прибрались. по крайней мере я не ощутил заметного прилива скорости. может надо не отключать цену, а именно вывод в тизере убирать... но потом придется настраивать опять много.. не спешу ее отрубать пока.
#16
Posted 07 December 2014 - 06:57
так что придется сидеть на 5.4
Это не смертельно. Прирост производительности будет не велик.
Сравнимо как 5.4 + xcache = 5.5
Посмотрел, у вас сейчас так и есть.
По цене чуть позже покажу разницу на графике. Еще точных измерений не делал. наверно ближе к вечеру.
Отключайте проверку лицензий как можно скорее!
— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.
#17
Posted 07 December 2014 - 15:48
Опанька.... смотрю - мемкеш из вариантов кеша пропал.. что там хостер творит. У меня есть еще сайт этот на полигоне, я отрубил там цену через удаление - что то не чувствую разницу на скорость.
#18
Posted 08 December 2014 - 10:20
Сегодняшние измерения показали, что 3 элемента цены добавит примерно 6-7мс к одному тизеру.
С чистым кешем намного больше.
--------------------
И так, сегодня посмотрел еще. Вот коротенечко список рекомендаций.
10. На протяжении полутора часов, пока я смотрел ваш сайт кеш был полностью удален 3-4 раза. Думаю всему виной эта кнопка. Кому то она мешает жить... http://llfl.ru/c623kg Как кеш может эффективно работать, если его все время чистят? =) как минимум добавить папку миниатюры в исключения, или вовсе её вынести из /cache/
11. В каждой категории есть вот такой блок.
Чтобы вычислить кол-во материалов, это отдельный не кешируемый запрос в базу. Не кешируется, потому что через API Zoo.
12. Сделал так, чтобы кеш картинок разбивался по вложенным директориям. (сегодня напишу мини рецепт).
Это должно снизить тормоза от огромного кол-ва папок в директории
13. Настоятельно рекомендую вам перенести папку cache в RAM диск. Это сильно разгрузит FS, а скорость кеша будет максимально возможной. По сути получится тот же самый memcache без траты времени на сетевые подключения.
http://joomlablog.ru...kh#comment-2981 (кстати, со мной солидарен Dmitry Rekun, он участвует в разработке Joomla Core).
14. На любой странице каталога компонент zoo+jbzoo рендерят каталог примерно 400-500 мс
Вся страница при этом ~900мс http://llfl.ru/m5dxnl из них 120-130 - это запуск Joomla, остается еще порядка 300-400 мс на все остальное (модули, плагины, шаблон). А это еще чуть-чуть и половина.
К чему это я? Сейчас ваш сайт состоит не только из каталога, но и тонны модулей и плагинов.
15. Про плагины отдельно
Системные грузятся всегда, даже когда не используются.
Рекомендую вам по возможности из этого списка что-нибудь отключить
16. Тоже самое с плагинами контента.
Они запускаются на любую попытку вывода текста. Каждый из них работает на регулярках.
17. Хостинг.
Не знаю где вы хоститесь, но очень похож на типичный шаред.
Смущают вот эти значения
со скоростью файловой системный понятно - влияет практически на любой чих сайта вне зависимости от компонентов и расширений и даже CMS.
Последнее значения это крайне важный показатель загрузки процессора сервера - http://ru.wikipedia....ki/Load_Average
В идеале он должен быть меньше 1, если средняя загруженность то 2-3, больше 5 - еще чуть чуть и караул (число сильно зависит от количества логических ядер в системе).
la у вас на сервере сильно пляшет (замечал от 3х до 6 за час), значит производительность не постоянная да еще и процессор
думаю вы замечали что одна и та же страница может грузится с разной скоростью при прочих одинаковых условиях даже с заполненым кешем
18. Самый-самый важный тест сайта - http://llfl.ru/s4sfaz
На моих сайтах он редко превышает 130.
Профилирование. Вот как вижу это я сейчас
----------------------------------
ВНИМАНИЕ! Смотреть числа только между start и finish, иначе вы будете измерять погоду, а не время рендеринга.
Как видите на каждый тизер уходит примерно 16мс, что в принципе приемлемо.
Внизу модули и запросы в базу данных.
Запросы в базу не уходят (кеш), поэтому время 0-1 (префикс model)
Модуль корзины съел 2 мс
position-fields - 805 - 794 = 11 мс
весь jbzoo и zoo 636 - 115 = 521 мс, из них примерно 140-150 - это инициализация всех классов всего компонента + jbzoo
Пока на этом думаю закончить свой аудит и так написал больше чем собирался.
Хочу чтобы вы, да и любой кто будет это читать, понимали, что скорость сайта, это не 1-2 фактора, а целый комплекс. По мелочи, по мелочи... На вскидку насчитал почти 20 вещей, от которых зависит скорость вашего сайта. Ориентировочно можно ускорить сайт еще на 30%
Самыми тяжелыми местами должны остаться
- картинки, ибо у вас их несколько тысяч, а создание миниатюры одна из самых тяжелых операций на любом сайте.
- формы фильтра. Без кеша не рекомендую использовать, т.к все эти селекты http://llfl.ru/nlhln9 тяжело выбирать из базы со всеми условиями.
PS я бы отказался от многих сторонних расширений вроде фиксов jquery, фаерволов, скролов... в купе дает еще порядка 50мс
Отключайте проверку лицензий как можно скорее!
— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.
#19
Posted 08 December 2014 - 11:56
Пойду по пунктам:
10 - это плагин автоочистка кеша при сохранении материалов. Удалил. Набок он не сдался.
11 - отключил
13. Настоятельно рекомендую вам перенести папку cache в RAM диск.
Не нашел на вскидку пока как это сделать. Могу ли я это на шареде сделать?
15. Про плагины отдельно Системные грузятся всегда, даже когда не используются. Рекомендую вам по возможности из этого списка что-нибудь отключить
Из всего что там выделено - мне по ходу все нужно, кроме System - Widgetkit Joomla
16. Тоже самое с плагинами контента.
Не могу убрать их... это слайды, это подгрузка модулей в контент.. которую и я использую, обработка мыла для защиты от спамботов. попробую отказаться от подргузки модулей в контент.. очень уж увлекся этим удобством..
17. Хостинг. Не знаю где вы хоститесь, но очень похож на типичный шаред.
Это и есть типичный шаред hoster.by единственный плюс в нем - ssd диски.. по крайней мере так рекламировали.
У нас в РБ есть одна проблема - если контора осуществляет деятельность на територии РБ - хостинг должен быть тоже на територии этой самой РБ. я не могу позволить себе хостера Германии или америки а наши сервера стоят нормально так я бы сказал. Я могу предложить заказчику купить VPS.. но я когда смотрел прошлы - смог на тест взять только минимальный тарифный план. А так как я ни когда не работал с ними - не могу предсказать какой выигрыш получится... нет возможности оттестить. А затратив кучу денег, попользовав что то и не получив отдачи в стиле - ВАУ!! КРУТО! я бы тоже поимел претензию к компетентности того кто посоветовал что то сделать.
Я перегужу в шаблон многие вещи, которые сгенерированы через модули. Вопрос сколько с сумме милисекунд это даст на страничку.
#20
Posted 08 December 2014 - 12:07
15. Про плагины отдельно
Системные грузятся всегда, даже когда не используются.
Рекомендую вам по возможности из этого списка что-нибудь отключить
16. Тоже самое с плагинами контента.
Они запускаются на любую попытку вывода текста. Каждый из них работает на регулярках.
PS я бы отказался от многих сторонних расширений вроде фиксов jquery, фаерволов, скролов... в купе дает еще порядка 50мс
Если позволите влезу. Вот например zoo event, ну как его отключить ? Или виджет кит... На нем так же часто построено пол сайта. Firewall полезная щтука и активный сканер очень часто спасает сайты от взлома и инклюдов. Есть много проектов на VM или K2 или без онных с firewall тормозов не замечано да же с большим количеством статей, тизеров, ресайзов и т.д.
PS Рецептик для кэша очень ждем.
Edited by isay777, 08 December 2014 - 12:07.