Почему Magento так медленно?

Является ли Magento обычно настолько ужасно медленным?

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

Сервер, на котором он размещен, отлично работает с другими сайтами, отличными от Magento. Что такое PHP-код, который использует Magento, что делает его настолько медленным, и что можно сделать, чтобы исправить его?

Ответ 1

Я только коснулся участия в оптимизации Magento для производительности, но здесь несколько причин, почему система настолько медленная

  • Части Magento используют систему баз данных EAV, реализованную поверх MySQL. Это означает, что запрос одной "вещи" часто означает запрос нескольких строк

  • Существует много вещей за кулисами (конфигурация приложения, системная конфигурация, макет конфигурации и т.д.), которые включают в себя создание гигантских деревьев XML в памяти и затем "запрос" тех же деревьев для информации. Это занимает как память (сохранение деревьев), так и процессор (разбор деревьев). Некоторые из них (особенно дерево макетов) огромны. Кроме того, если кеширование не включено, это дерево создается из файлов на диске и для каждого запроса.

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

  • Помимо системы компоновки, система шаблонов Magento включает в себя много рекурсивного рендеринга. Это добавляет.

В целом, Magento Engineers было поручено, в первую очередь, создать наиболее гибкую, настраиваемую систему, а потом позаботиться о производительности.

Первое, что вы можете сделать, чтобы обеспечить лучшую производительность, - это включить кеширование (System → Cache Management). Это облегчит часть блокировки CPU/диска, которая будет продолжаться, пока Magento будет наращивать свои различные деревья XML.

Вторая вещь, которую вы захотите сделать, - обеспечить, чтобы ваша команда хостов и операций имела опыт настройки производительности Magento. Если вы полагаетесь на план за 7 долларов США на месяц, чтобы увидеть вас, хорошо, удачи с этим.

Ответ 2

В дополнение к рекомендациям Alan Storm по кэшированию, две вещи, которые я специально рекомендую вам изучить в отношении кэширования:

- Убедитесь, что кеширование находится в memcached, а не на диске.

Я забочусь о нескольких установках magento, и как только вы получаете какую-то нагрузку на систему, memcached начинает работать намного быстрее. И его мертвый легко изменить его (по сравнению с другими пурпурными вещами, по крайней мере!)

Хорошая начальная точка здесь: http://www.magentocommerce.com/boards/viewthread/12998/P30/ - но если вы еще не использовали memcached раньше, стоит посмотреть на некоторые общие информация об этом также.

- Включить кэширование шаблонов/изображений.

Это хорошая статья: http://inchoo.net/ecommerce/magento/magento-block-caching/

На сайте magento есть хорошие (кеширование в Google Magento), но на данный момент это не так.

Чтобы добавить мои два цента в кэширование блоков, я бы посоветовал вам создавать свои собственные блоки в /app/code/local, расширять основные и определять параметры кэша, называть их xxx_Cache, а затем обновлять макет для использования эти блоки вместо основных. Таким образом, вы избегаете потери своих изменений или взлома системы при обновлении magento.

Ответ 3

Если вы еще этого не видели, Magento и Rackspace объединились, чтобы создать белую бумагу по настройке производительности Magento. Отлично. https://support.rackspace.com/whitepapers/building-secure-scalable-and-highly-available-magento-stores-powered-by-rackspace-solutions/

--- изменить ---

Еще один отличный ресурс, недавно доступный (октябрь 2011): http://www.sessiondigital.com/assets/Uploads/Mag-Perf-WP-final.pdf

(Спасибо из-за Алана Шторма на этом.)

Ответ 5

Возможно, также очень неочевидная причина, по которой ваш интерфейс администратора очень медленный. Magento имеет модуль с именем Mage_AdminNotification. Попробуйте отключить эту функцию. Потому что он делает запрос magentocommerce.com для новых сообщений об обновлениях. Если их серверы медленны, ваша страница администратора ждет и работает медленнее из-за сетевого отставания и загрузки внешних новостей. Если вы обеспечили соединение исходящего сервера через брандмауэр, это может быть еще более неприятным, так как интерфейс администратора будет ждать таймаута, когда он не сможет достичь magentocommerce.com

Чтобы отключить его: перейдите в раздел "Система → Конфигурация", прокрутите страницу вниз и нажмите "Дополнительно" (в разделе "Дополнительно" ). Теперь отключите Mage_AdminNotification и сохраните!

Ответ 6

У меня есть только поверхностный опыт работы с Magento. Я установил его на общий сетевой сервер, и загрузка страницы была мрачной ~ 5 + секунд. На жаворонке я установил его на моем оптимизированном для выделенного сервера сайтов CMS, и он чувствовал себя очень, очень быстро.

Мой выделенный хостинг имел ~ 10 Joomla! сайтов и сайта VBullitin.

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

Ответ 7

Magento очень медленный, потому что дизайн базы данных не очень хорош. Код является беспорядком и очень сложно обновить и оптимизировать. Таким образом, все оптимизации выполняются с помощью кеша вместо кода.

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

Ответ 8

Переключение с Apache на LiteSpeed ​​очень помогло нам. В дополнение: Редактирование настроек MySQL, установка Fooman Speedster (модуль для сжатия/объединения js и css файлов) и установка APC. Magento также опубликовал технический документ о том, как получить максимальную производительность из корпоративного выпуска, но он в равной степени применим и к другим версиям: http://www.magentocommerce.com/whitepaper/

Ответ 9

Я больше участвую в оптимизации управляемого сервера в своей компании, но у меня может быть несколько советов для вас. Во-первых, вы можете более внимательно изучить код, используя функцию отслеживания кода сервера Zend. Это позволит вам увидеть, где и когда все становится грязным.

Я полностью разделяю соображения benlumley относительно кеша. Большинство сайтов, которые мы размещаем, даже не имеют возможности кэширования блоков. Этот кеш должен быть явно вызван, а не "принят". Поэтому, если код еще не принял участие в этом механизме, это то, что вы определенно хотите попробовать. Если у вас есть версия EE, вы можете получить полную страницу, чтобы получить лучшее от зверя.

Обратный прокси также поможет. Он будет кэшировать статические ресурсы, значительно снижая давление на стек php-интерпретации ваших серверов.

Не забудьте записать сеансы и кеш Magento на RAM-диск. Это также определенно приведет вас к другому уровню выступлений.

Здесь еще многое можно сказать, но у меня не хватает времени. Вы должны знать, что хороший сайт, хорошо закодированный в версии 1.4.1 CE, работающий на сервере RAM 2x5650 Xeon + 16 GB и имеющий Rproxy сверху, может принимать до 50 000 уникальных посетителей в день с плавными страницами для всех.

Ответ 10

Существует множество причин, по которым ваша корзина Magento может работать медленно, но нет оправданий, поскольку существует множество способов повысить уровень проблемы и сделать ее довольно быстро. Включение Gzip путем изменения вашего файла htaccess - это начало. Вы также можете установить расширение для ускорителя fooman. Тип используемого сервера также определит скорость вашего магазина. Дополнительные советы и лучшее объяснение здесь http://www.interactone.com/how-to-speed-up-magento/

Ответ 11

Когда я впервые установил, у меня были страницы, которые загружали 30 секунд. Мой сервер не был максимальным в ram или процессоре, поэтому я не знал, что делать. Глядя на сетевую панель firebug, она загружала около 100 файлов на страницу, и каждый из них занимал много времени для подключения. После установки fooman speedster и gzip в htaccess время загрузки сократилось до 3 секунд, например, они были на других тележках на моем сервере.

Ответ 12

он также снизится до функциональности и производительности.

Исходная производительность достигается с помощью nginx, php-fpm, memcached, apc и соответствующего сервера.

Функциональность, такая как производительность plesk и magento, может управляться, принимая во внимание всю инфраструктуру при разработке облака производительности magento.