Действительно ли Magento так ужасно медленный?
Это мой первый опыт работы с ним, и панель администратора просто требует времени для загрузки и сохранения изменений. Это установка по умолчанию с данными теста.
Сервер, на котором он размещен, отлично работает с другими сайтами, отличными от Magento. Что такое PHP-код, который использует Magento, что делает его настолько медленным, и что можно сделать, чтобы исправить его?
Я только коснулся участия в оптимизации Magento для производительности, но вот несколько причин, почему система настолько медленная
Части Magento используют систему баз данных EAV, реализованную поверх MySQL. Это означает, что запрос одной «вещи» часто означает запрос нескольких строк
Существует множество вещей за кулисами (конфигурация приложения, системная конфигурация, макет конфигурации и т. Д.), Которые включают в себя создание гигантских деревьев XML в памяти и затем «запрос» тех же деревьев для информации. Это занимает как память (сохранение деревьев), так и процессор (разбор деревьев). Некоторые из них (особенно дерево макетов) огромны. Кроме того, если кеширование не включено, это дерево создается из файлов на диске и по каждому запросу .
Magento использует свою конфигурационную систему, чтобы вы могли переопределять классы. Это мощная функция, но это означает, что всякий раз, когда создается экземпляр модели, помощника или контроллера, необходимо выполнить дополнительные инструкции PHP, чтобы определить, нужен ли исходный файл класса или файлы классов переопределения. Это добавляет.
Помимо системы компоновки, система шаблонов Magento включает в себя много рекурсивного рендеринга. Это добавляет.
В целом, Magento Engineers было поручено, в первую очередь, создать наиболее гибкую, настраиваемую систему, а потом позаботиться о производительности.
Первое, что вы можете сделать, чтобы обеспечить лучшую производительность, – это кэширование (System -> Cache Management). Это облегчит часть блокировки CPU / диска, которая будет продолжаться, пока Magento будет наращивать свои различные деревья XML.
Второе, что вам нужно сделать, это обеспечить, чтобы ваш хост и операционная группа имели опыт настройки производительности Magento. Если вы полагаетесь на план за 7 долларов США на месяц, чтобы увидеть вас, хорошо, удачи в этом.
В дополнение к рекомендациям Алана Шторма по кэшированию есть две вещи, которые я специально рекомендую вам изучить в отношении кэширования:
– Убедитесь, что кеширование находится в memcached, а не на диске.
Я забочусь о нескольких установках magento, и как только вы получаете какую-то нагрузку на систему, memcached начинает работать намного быстрее. И его мертвый легко изменить его (по сравнению с другими пурпурными вещами, по крайней мере!)
Хорошая отправная точка здесь: http://www.magentocommerce.com/boards/viewthread/12998/P30/ – но если вы еще не использовали memcached раньше, стоит посмотреть на некоторые общие сведения об этом.
– Включить кэширование шаблонов / изображений.
Это хорошая статья: http://inchoo.net/ecommerce/magento/magento-block-caching/
На сайте magento тоже есть хорошие (кеширование в Google Magento Block), но в данный момент оно отсутствует.
Чтобы добавить мои два цента в кэширование блоков, я бы посоветовал вам создавать свои собственные блоки в / app / code / local, расширять основные и определять параметры кэша, называть их xxx_Cache, а затем обновлять макет, чтобы использовать эти блоки вместо основных. Таким образом, вы избегаете потери изменений или взлома системы при обновлении magento.
Если вы еще этого не видели, 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
(Спасибо благодаря Алану Шторму на этом.)
Вы можете попробовать это – не гарантированно работать, но помогли многим людям:
http://inchoo.net/ecommerce/magento/boost-the-speed-of-your-magento/
Возможно, также очень неочевидная причина, по которой ваш интерфейс администратора очень медленный. Magento имеет модуль с именем Mage_AdminNotification. Попробуйте отключить эту функцию. Потому что он делает запрос magentocommerce.com для новых сообщений об обновлениях. Если их серверы медленны, ваша страница администратора ждет и работает медленнее из-за сетевого отставания и загрузки внешних новостей. Если вы обеспечили соединение исходящего сервера через брандмауэр, это может быть еще более неприятным, так как интерфейс администратора будет ждать таймаута, когда он не сможет достичь magentocommerce.com
Чтобы отключить его: перейдите в раздел «Система -> Конфигурация», прокрутите страницу вниз и нажмите «Дополнительно» (в разделе «Дополнительно»). Теперь отключите Mage_AdminNotification
и сохраните!
У меня есть только поверхностный опыт работы с Magento. Я установил его на общий сетевой сервер, и загрузка страницы была мрачной ~ 5 + секунд. На жаворонке я установил его на свой оптимизированный для выделенного сервера сайтов CMS, и он чувствовал себя очень, очень быстро.
Мой выделенный хостинг имел ~ 10 Joomla! сайтов и сайта VBullitin.
Я предполагаю, что это просто не будет работать на общем хостинге. Переадресация просто не позволит достаточно ресурсов для Magento для запуска, как и следовало бы.
Magento очень медленный, потому что дизайн базы данных не очень хорош. Код является беспорядком и очень сложно обновить и оптимизировать. Таким образом, все оптимизации выполняются с помощью кеша вместо кода.
С другой стороны. Это интернет-магазин с множеством инструментов. Поэтому, если вам нужен гибкий интернет-магазин, просто купите очень мощный сервер, и все будет в порядке.
Переключение с Apache на LiteSpeed очень помогло нам. В дополнение: Редактирование настроек MySQL, установка Fooman Speedster (модуль для сжатия / объединения js и css-файлов) и установка APC. Magento также опубликовал технический документ о том, как получить наилучшую производительность из корпоративного выпуска, но в равной степени применим и к другим версиям: http://www.magentocommerce.com/whitepaper/
Я больше участвую в оптимизации управляемого сервера в своей компании, но у меня может быть несколько советов для вас. Во-первых, вы можете более внимательно изучить код, используя функцию отслеживания кода сервера Zend. Это позволит вам увидеть, где и когда все становится грязным.
Я полностью разделяю мнение Бэнлумли относительно кеша. Большинство сайтов, которые мы размещаем, даже не имеют возможности кэширования блоков. Этот кеш должен быть явно вызван, а не «принят». Поэтому, если код еще не принял участие в этом механизме, это то, что вы определенно хотите попробовать. Если у вас есть версия EE, вы можете получить полную страницу, чтобы получить лучшее из зверя.
Обратный прокси также поможет много. Он будет кэшировать статические ресурсы, значительно снижая давление на стек интерпретации php на ваших фронтальных серверах.
Не забудьте записать сеансы и кеш Magento на RAM-диск. Это также обязательно приведет вас к другому уровню выступлений.
Здесь еще многое можно сказать, но у меня не хватает времени. Вы должны знать, что хороший сайт, хорошо закодированный в версии 1.4.1 CE, работающий на сервере RAM 2×5650 Xeon + 16 GB и имеющий Rproxy сверху, может принимать до 50 000 уникальных посетителей в день с плавными страницами для всех ,
Есть много причин, по которым ваша корзина Magento может работать медленно, но нет оправданий, поскольку существует множество способов повысить уровень проблемы и сделать ее довольно быстро. Включение Gzip путем изменения вашего файла htaccess – это начало. Вы также можете установить расширение для ускорителя fooman. Тип используемого сервера также определит скорость вашего магазина. Дополнительные советы и лучшее объяснение здесь http://www.interactone.com/how-to-speed-up-magento/
Когда я впервые установил, у меня были страницы, которые загружали 30 секунд. Мой сервер не был максимальным в ram или процессоре, поэтому я не знал, что делать. Глядя на чистую панель firebug, она загружала около 100 файлов на страницу, и каждый из них занимал много времени для подключения. После установки fooman speedster и gzip в htaccess время загрузки сократилось до 3 секунд, например, они были на других корзинах покупок на моем сервере.
он также снизится до функциональности и производительности.
Исходная производительность достигается с помощью nginx, php-fpm, memcached, apc и надлежащего сконструированного сервера.
Функциональность, такая как производительность plesk и magento, может управляться, принимая во внимание всю инфраструктуру при разработке облака с эффектом пурпурного цвета.