Magento: настройка производительности

[10 ноября 2016 г.]    Российская сборка Magento 2.49.12
Magento 2: модули и услуги
#1 AraArtArt
  • Группа: Гости

16.05.2010 13:00

Доброго времени суток всем!
Проводил эксперименты с Magento и обнаружил довольно-таки странную особенность.
У меня VPS, гиг памяти. Решил посмотреть в чем же причина подтормаживания данного скрипта и обнаружил, что нагрузка на проц Апачем и Мускулом осуществляется как-то неравномерно. То есть при отправке запроса Апач слегка возбуждается (это понятно, должен же он его прочитать), после чего система замирает где-то на секунду, потом, практически одновременно возбуждается Мускуль и Апач (то же понятно, запросы к БД, отработка скриптов ПХП, два ядра, работают практически параллельно), приходит ответ.
Сначала грешил на IO, у VPS по определению жеский диск - слабое место, перекинул все в память (на диск в памяти), т.е. действительно все, и папку с Magento и всю БД. Вроде никаких проблем c IO быть не должно, так нет, принимает запрос, ждет секунду, формирует и выдает ответ.

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

Отсюда вопрос, где потерянная секунда? И как это возможно?

Да, и еще, данная особенность замечена только при работе frontend. В админке все работает как надо.

#2 ArtArtArt
  • Группа: Гости

18.05.2010 11:34

Вроде разобрался.
Это происходит из-за того, что при каждом запросе страницы скрипт загружается и компилится. (После Java как-то непривычно, расход ресурсов-то какой!) Magento обладает большим количеством файлов, плюс Zend Framework, в итоге получается Монстра :(

#3 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

18.05.2010 22:39

Имеется возможность установить компилятор кода PHP, причем для крупных систем вроде Magento это настоятельно рекомендуется.

#4 ArtArtArt
  • Группа: Гости

19.05.2010 12:30

Компилятор или кэшер байт-кода?
Если компилятор, то это очень интересно, расскажит подробнее, пожалуйста!

#5 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

19.05.2010 12:42

Кешер байт-кода.

#6 Rus
  • Группа: Пользователь
  • Сообщений: 4
  • Регистрация: 19.05.2010

19.05.2010 16:08

Просмотр сообщенияArtArtArt (18.05.2010 11:34) писал:

Вроде разобрался.
Это происходит из-за того, что при каждом запросе страницы скрипт загружается и компилится. (После Java как-то непривычно, расход ресурсов-то какой!) Magento обладает большим количеством файлов, плюс Zend Framework, в итоге получается Монстра :blink:


Ну как, удалось решить проблему с задержкой? Помог кэшер байт-кода?

#7 ArtArtArt
  • Группа: Гости

20.05.2010 12:01

Пока не очень.
Проблема в следующем:
У меня VPS, соответственно самое узкое место - дисковая подсистема.
Поставил APC, настроил, чтобы APC не проверял изменились ли файлы (apc.stat=0). При изменении скриптов просто перегружаем Апач, НО на диск эта зараза все-равно лезет, это заметно, когда происходит замедление обращения к дискам на сервере, замедляется и загрузка страниц.
Вопрос знатокам. Можно ли настроить APC так, чтобы обращения к диску не происходило вообще, если скрипт уже закеширован. Тогда, я думаю, прирост в скорости загрузки страниц будет существенным.

#8 AraArtArt
  • Группа: Гости

20.05.2010 12:21

Вот описание настройки

apc.stat integer
Be careful if you change this setting. The default is for this to be On which means that APC will stat (check) the script on each request to see if it has been modified. If it has been modified it will recompile and cache the new version. If you turn this setting off, it will not check. That means that in order to have changes become active you need to restart your web server. On a production server where you rarely change the code, turning stats off can produce a significant performance boost.

For included/required files this option applies as well, but note that if you are using relative path includes (any path that doesn't start with / on Unix) APC has to check in order to uniquely identify the file. If you use absolute path includes APC can skip the stat and use that absolute path as the unique identifier for the file.

Во втором абзаце что-то говорится про абсолютные/относительные пути к файлам. Я не очень силен в PHP, пока. Может кто-то из специалистов поможет? Вопрос-то важный.

#9 AraArtArt
  • Группа: Гости

20.05.2010 16:33

Эксперименты продолжаются :blink:

Добавил в файле Mage.php
После строки
$appRoot = dirname(__FILE__);
Следующее:
$appRoot = '/'.$appRoot;

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

А вообще для профессионалов соц. заказ есть :blink: Под названием "Ускоряем время отклика Magento".

Есть такой модуль Compilation у Magento в базе. Он собирает все основные файлы Magento в одном месте, вроде как ускорение.
Вот бы файлы из секции "default" слить в один и инклюдить уже его. Я думаю, подгрузка ускорится если не в 10, то в 5 раз точно. Жаль самому времени нет заняться (Да и знаний в общем-то, что важнее), на изучение вопроса уйдет где-то 3-4 рабочих дня.

#10 Rus
  • Группа: Пользователь
  • Сообщений: 4
  • Регистрация: 19.05.2010

20.05.2010 18:36

Если посмотреть тесты этого блога http://www.magentoco...ver-benchmarks/ то из него выходит, что Magento довольно шустрая. Интересно, как они этого добились?

#11 AraArtArt
  • Группа: Гости

20.05.2010 18:49

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

#12 ArtArtArt
  • Группа: Гости

21.05.2010 18:06

Просмотр сообщенияAraArtArt (20.05.2010 16:33) писал:

Эксперименты продолжаются :blink:

Добавил в файле Mage.php
После строки
$appRoot = dirname(__FILE__);
Следующее:
$appRoot = '/'.$appRoot;

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

А вообще для профессионалов соц. заказ есть :blink: Под названием "Ускоряем время отклика Magento".

Есть такой модуль Compilation у Magento в базе. Он собирает все основные файлы Magento в одном месте, вроде как ускорение.
Вот бы файлы из секции "default" слить в один и инклюдить уже его. Я думаю, подгрузка ускорится если не в 10, то в 5 раз точно. Жаль самому времени нет заняться (Да и знаний в общем-то, что важнее), на изучение вопроса уйдет где-то 3-4 рабочих дня.



Соц. заказ отменяется. :blink: Все уже придумали до нас. В модуле Compilation это уже происходит.

Только при использовании APC не надо включать APC как бкенд кэшер, происходит сильная фрагментция. Для сохранения сессий и кэша Мадженты лучше всего использовать tmpfs. (ИМХО).

Поделиться темой: