Jump to content


Photo
- - - - -

Как избавиться от тормоза каталога?


30 replies to this topic

#11 SmetDenis

SmetDenis
  • Administrators
  • User rate: 139.4
  • posts: 16232
  • topics: 200

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%
 
без кеш точно не обойтись.
----------------------------------------
я еще не смотрел других частей сайта, мне еще нужно время до завтра
написал вам чтобы не томить ожиданием.
 
попробую некоторые вещи, напишу сработало ли
  • 2
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#12 Ёшкин Кот

Ёшкин Кот
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 77.8
  • posts: 757
  • topics: 134

Posted 06 December 2014 - 16:27

Спасибо.

По поводу многих типов товара - это очень удобно девочке, которая сидит на прайсах. Я давно использую редактирование через фронт элементов а теперь это еще и ZOO сам влепил и стало удобнее. Когда видно только один тип товара - это гораздо удобнее по полям править. Так же экспорт идет полегче (хотя несколько тысяч товаров все равно только по отдельным полям можно выцепить нормально)

 

А как кеш поделить на папки??  у меня в наследство от виртуемарта осталась структура с 99999+ файлов в одной папке .. я ее так и назвал trash в которой храняться все все картинки каталога.на данный момент я так и не определился как их поделить по папкам.

 

2. На каждый тип материала сделаны свои шаблоны

А как это решить?? перенести в корень в шаблон по умолчаню и удалить соответствующие папки шаблонов? и все решит?

 

Я бы использовал PHP 5.5,

Решу вопрос с ионкубом на пятой версии - переползу на нее.

 

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

 

 вбщем поработаем над оптимизацией.


  • 0

#13 SmetDenis

SmetDenis
  • Administrators
  • User rate: 139.4
  • posts: 16232
  • topics: 200

Posted 06 December 2014 - 16:40

Пока ничего не предпринимайте по ускорению, я досмотрю до конца и что-то внутренее сделаю сам.

 

 

 

А как это решить?? перенести в корень в шаблон по умолчаню и удалить соответствующие папки шаблонов? и все решит?

Скорее всего никак не решить, просто стоит понимать, что скорость от этого тоже зависит. Насколько смертельно, сказать точно не могу.

 

 

 

А как кеш поделить на папки??  у меня в наследство от виртуемарта осталась структура с 99999+ файлов в одной папке .. я ее так и назвал trash в которой храняться все все картинки каталога.на данный момент я так и не определился как их поделить по папкам.

 

Влияет именно папка кеша, а тормозит именно любое обращение к файлу.

Т.е после ресайза будет обращение именно к кешу а не оригиналу.

 

--------

Кстати, кстати...

8. У вас размер realpath_cache_size в php.ini очень маленький. Увеличьте до 4мб

сейчас он 16 кб, это ужасно.

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

 

9. И узнайте у хостера, включен ли open_basedir.

Если да, то лучше отключить. Опция заставляет проверять любой файл на сайте, что он находится в определенной папке.

 

пока все... посмотрю и потом еще что-нить умного скажу =)


  • 1
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#14 Ёшкин Кот

Ёшкин Кот
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 77.8
  • posts: 757
  • topics: 134

Posted 06 December 2014 - 20:34

php_flag output_buffering   off

open_basedir                                no value

и realpath_cache_size                    4M

 

На 5.5. ион ставить отказались почему то.. :( так что придется сидеть на 5.4 но могу управлять модулями через C-panel ... у меня доступен к стати мемкеш, но он педалит если его включить. можно тоже его глянуть.


  • 0

#15 Ёшкин Кот

Ёшкин Кот
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 77.8
  • posts: 757
  • topics: 134

Posted 06 December 2014 - 21:36

И еще вопрос. По поводу цены. Я отключил цену сделав ее в настройках типа для зарегистрированных. Она из тизеров пропала, но тормоза как бы.. не сильно то и прибрались. по крайней мере я не ощутил заметного прилива скорости. может надо не отключать цену, а именно вывод в тизере убирать... но потом придется настраивать опять много.. :( не спешу ее отрубать пока.


  • 0

#16 SmetDenis

SmetDenis
  • Administrators
  • User rate: 139.4
  • posts: 16232
  • topics: 200

Posted 07 December 2014 - 06:57

так что придется сидеть на 5.4
 

Это не смертельно. Прирост производительности будет не велик.

Сравнимо как 5.4 + xcache = 5.5
Посмотрел, у вас сейчас так и есть.

 

 

По цене чуть позже покажу разницу на графике. Еще точных измерений не делал. наверно ближе к вечеру.


  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#17 Ёшкин Кот

Ёшкин Кот
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 77.8
  • posts: 757
  • topics: 134

Posted 07 December 2014 - 15:48

Опанька.... смотрю - мемкеш из вариантов кеша пропал..  что там хостер творит. У меня есть еще сайт этот на полигоне, я отрубил там цену через удаление - что то не чувствую разницу на скорость. :(


  • 0

#18 SmetDenis

SmetDenis
  • Administrators
  • User rate: 139.4
  • posts: 16232
  • topics: 200

Posted 08 December 2014 - 10:20

Скорость зависит не только из цены, но и из прочих пунктов.
Сегодняшние измерения показали, что 3 элемента цены добавит примерно 6-7мс к одному тизеру.
С чистым кешем намного больше.
 
--------------------
И так, сегодня посмотрел еще. Вот коротенечко список рекомендаций.
 
10. На протяжении полутора часов, пока я смотрел ваш сайт кеш был полностью удален 3-4 раза. Думаю всему виной эта кнопка. Кому то она мешает жить... http://llfl.ru/c623kg Как кеш может эффективно работать, если его все время чистят? =) как минимум добавить папку миниатюры в исключения, или вовсе её вынести из /cache/
 
11. В каждой категории есть вот такой блок.
Чтобы вычислить кол-во материалов, это отдельный не кешируемый запрос в базу. Не кешируется, потому что через API Zoo.
bo6r_200x0.png
 
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. Про плагины отдельно
Системные грузятся всегда, даже когда не используются.
Рекомендую вам по возможности из этого списка что-нибудь отключить
fkn5_200x0.png
 
16. Тоже самое с плагинами контента.
Они запускаются на любую попытку вывода текста. Каждый из них работает на регулярках.
nhf5_200x0.png
 
17. Хостинг.
Не знаю где вы хоститесь, но очень похож на типичный шаред.
Смущают вот эти значения
1a1b_200x0.png
со скоростью файловой системный понятно - влияет практически на любой чих сайта вне зависимости от компонентов и расширений и даже CMS.
 
Последнее значения это крайне важный показатель загрузки процессора сервера - http://ru.wikipedia....ki/Load_Average
В идеале он должен быть меньше 1, если средняя загруженность то 2-3, больше 5 - еще чуть чуть и караул (число сильно зависит от количества логических ядер в системе).
 
la у вас на сервере сильно пляшет (замечал от 3х до 6 за час), значит производительность не постоянная да еще и процессор
думаю вы замечали что одна и та же страница может грузится с разной скоростью при прочих одинаковых условиях даже с заполненым кешем
 
 
18. Самый-самый важный тест сайта - http://llfl.ru/s4sfaz
На моих сайтах он редко превышает 130. 
 
 
Профилирование. Вот как вижу это я сейчас
----------------------------------
z40z_200x0.png
ВНИМАНИЕ! Смотреть числа только между 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мс
  • 1
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#19 Ёшкин Кот

Ёшкин Кот
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 77.8
  • posts: 757
  • topics: 134

Posted 08 December 2014 - 11:56

Пойду по пунктам:

 

10 - это плагин автоочистка кеша при сохранении материалов. Удалил. Набок он не сдался.

 

11 - отключил

 

13. Настоятельно рекомендую вам перенести папку cache в RAM диск.

 

Не нашел на вскидку пока как это сделать. Могу ли я это на шареде сделать?

 

15. Про плагины отдельно Системные грузятся всегда, даже когда не используются. Рекомендую вам по возможности из этого списка что-нибудь отключить

 

Из всего что там выделено - мне по ходу все нужно, кроме System - Widgetkit Joomla

 

16. Тоже самое с плагинами контента.

 

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

 

17. Хостинг. Не знаю где вы хоститесь, но очень похож на типичный шаред.

 

Это и есть типичный шаред hoster.by единственный плюс в нем  - ssd диски.. по крайней мере так рекламировали.

 

У нас в РБ есть одна проблема - если контора осуществляет деятельность на територии РБ - хостинг должен быть тоже на територии этой самой РБ.  я не могу позволить себе хостера Германии или америки :( а наши сервера стоят нормально так я бы сказал. Я могу предложить заказчику купить VPS.. но я когда смотрел прошлы - смог на тест взять только минимальный тарифный план. А так как я ни когда не работал с ними - не могу предсказать какой выигрыш получится... нет возможности оттестить.  А затратив кучу денег, попользовав что то и не получив отдачи в стиле - ВАУ!! КРУТО! я бы тоже поимел претензию к компетентности того кто посоветовал что то сделать.

 

Я перегужу в шаблон многие вещи, которые сгенерированы через модули. Вопрос сколько с сумме милисекунд это даст на страничку.


  • 0

#20 isay777

isay777
  • JBZoo User (rus)
  • User rate: 113.4
  • posts: 1878
  • topics: 232

Posted 08 December 2014 - 12:07

 

 

15. Про плагины отдельно

Системные грузятся всегда, даже когда не используются.

Рекомендую вам по возможности из этого списка что-нибудь отключить

fkn5_200x0.png

 

16. Тоже самое с плагинами контента.

Они запускаются на любую попытку вывода текста. Каждый из них работает на регулярках.

nhf5_200x0.png

 

 

 

PS я бы отказался от многих сторонних расширений вроде фиксов jquery, фаерволов, скролов... в купе дает еще порядка 50мс

 

 

Если позволите влезу. Вот например zoo event, ну как его отключить ? Или виджет кит... На нем так же часто построено пол сайта.  Firewall полезная щтука и активный сканер очень часто спасает сайты от взлома и инклюдов.  Есть много проектов на VM или K2 или без онных с firewall тормозов не замечано да же с большим количеством статей, тизеров, ресайзов и т.д. 

 

PS Рецептик для кэша очень ждем. 


Edited by isay777, 08 December 2014 - 12:07.

  • 0
ХОСТИНГ для сайтов jbzoo (все попугаи)




Click to return to top of page in style!