Назад | Перейти на главную страницу

Хорошее односерверное решение для Magento?

Я настраиваю один сервер Debian, обслуживающий Magento с Mysql. Ожидается высокая нагрузка (миллионы обращений в день). Я читал комментарии разных людей и нашел так много разных настроек, но не уверен, что мне делать, если я хочу. Балансировка нагрузки между несколькими серверами, конечно, была бы неплохой, но у меня только один сервер. Так как насчет этого?

Varnish перед nginx и apache, где nginx обрабатывает только статические данные, а apache - динамический.

Или было бы лучше нанести лак только на apache? Итак, nginx находится впереди и имеет статические данные, напрямую обслуживаемые nginx, а динамические страницы apache через varnish?

Я не могу придумать никакой причины (кроме намеренно плохой конфигурации), которая сделала бы вашу предлагаемую установку A. лучше или хуже, чем предложенная вами установка B.

У тебя есть конкретный проблема, которую вы надеетесь решить, поставив Varnish перед Apache? Или Varnish перед nginx?

Если вы этого не сделаете, вы станете жертвой Cargo Cult Системное администрирование:

«Этот парень успешен, и он использует Varnish перед nginx и Apache, поэтому, если я использую Varnish перед nginx и Apache, я тоже добьюсь успеха».

Трафик редко прибывает так быстро, что у вас нет времени планировать, что с ним делать. Есть ли у вас план, который привлечет такой объем трафика (скажем, Стивен Фрай пообещал, что расскажет о вашем сайте, как только он будет запущен), или вы просто очень оптимистичный? Если нет, просто подключите устройство и работайте. Преждевременная оптимизация - это корень всех зол. У вас будет достаточно времени для оптимизации сайта, когда вы узнаете, как выглядит ваш трафик и где находятся ваши узкие места.

Чем проще, тем лучше. Если вы можете отказаться от одного или двух из трех упомянутых вами программ веб-обслуживания, вы, вероятно, обнаружите, что использование ЦП и памяти на сервере значительно снизилось. Возможно использование ЦП и памяти являются ваши узкие места.

Некоторые вещи, которые, вероятно, повлияют на объем трафика, который вы сможете обработать по мере вашего роста:

  1. Следите за своими медленными журналами MySQL и настраивайте запросы и индексы, пока медленные запросы не исчезнут.
  2. Убедитесь, что вы правильно настроили заголовки кеширования.

tl; dr

Не беспокойтесь о пробках, пока они не появятся.

Прежде всего, я полностью согласен с ответом Ладададады, что ...

  • Преждевременная оптимизация - корень всех зол
  • Чем проще, тем лучше, в основном

Не стоит оптимизировать, потому что вы можете получить больше трафика. Оптимизируйте, когда вам нужно оптимизировать, то есть когда вы испытываете пики трафика прямо сейчас ИЛИ когда вы определенно знаете, что будут огромные пики трафика (например, из-за маркетинговых действий).

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

А теперь конкретная часть Magento ... :)

Хотя, если я придерживаюсь мнения Ладададады, что вы не должны следовать только (другому) Cargo Cult, я рекомендую установить Varnish.

Зачем? Потому что стандартная установка Magento не очень быстрая без оптимизации. Ладно, это чертовски медленно.

Что делать, чтобы ускорить Magento:

  • Установить APC cache
  • Используйте Memcached как быстрый бэкэнд Magento
  • Поместите файлы кэша Magento на RAM-диск (tmpfs)
  • Поместите Varnish перед программным обеспечением вашего веб-сервера (Apache или nginx, на самом деле не имеет значения, если вы используете Varnish) для кеширования статического контента и полных страниц (например, кеша полной страницы Magento Enterprise)

Чтобы использовать Varnish эффективно, вам необходимо адаптировать Magento, чтобы полные страницы можно было кэшировать, а динамические части (например, виджет корзины) дополнительно загружались браузером клиента (с использованием JavaScript).

Для этого также доступен модуль: http://www.magentocommerce.com/magento-connect/pagecache-powered-by-varnish.html

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

Использование только одного сервера ... ну - идеальный SPOF (Single Point of Failure), о котором я могу думать. :) Использование нескольких серверов - это не только балансировка нагрузки и масштабирование. Речь идет о высокой доступности. Что произойдет, если ваш единственный сервер больше не сможет обрабатывать трафик / нагрузку? Да, он выйдет из строя, ваш магазин отключен, и огромное количество новых клиентов не смогут увидеть ваши хорошие товары - на самом деле они будут видеть некоторые уродливые сообщения об ошибках. Так что в основном ... вы будете очень облажались.

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

Может всего два сервера? Каждый из них со стеком веб-приложений и базой данных? Или три сервера, ... два узла webapp и выделенный сервер базы данных? Лучше всего было бы 4, ... два узла webapp и 2 узла базы данных.

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

Желаю вам всего наилучшего, ... (движение) боли роста - лучшая боль. ;)

Ну, я не уверен, как кто-то дает вам надежные советы, не зная ...

  1. Это будет для 1 магазина или нескольких (перепродажа)?
  2. Какова полная точная спецификация сервера?
  3. Каковы ваши цели по трафику (обращения, просмотры страниц, обязательная пропускная способность)?
  4. Покупатели преимущественно ищут или просматривают категории?

Совет, который мы даем нашим клиентам ...

Если вам нужно перепродать хостинг

Nginx> Apache> PHP-FPM

Это сохраняет поддержку .htaccess для ваших клиентов, безопасность (chroot / несколько php.inis) от PHP-FPM и производительность статических файлов от Nginx.

Если это только для тебя

Фунт> Лак> Nginx> PHP-FPM

Это дает вам распаковку SSL из Pound, статическое и динамическое (ESI) кеширование из Varnish, некэшированный статический контент из Nginx и динамический контент из PHP-FPM.

Если у вас нет реального опыта работы с лаком

Apache> PHP-FPM

По правде говоря, вы можете нанести намного больше вреда, чем пользы, с помощью Varnish, если вы не настроите его должным образом (кэшированные частные сеансы, нежелательные настройки cookie). То же самое и с Nginx.

Прочтите это http://www.sonassi.com/knowledge-base/magento-kb/mythbusting/why-shouldnt-i-use-nginx-for-magento/

Да и вообще избегайте tmpfs, это не увеличивает производительность.

Прочтите это для получения дополнительной информации ...

  1. http://magebase.com/magento-tutorials/magento-session-storage-which-to-choose-and-why/comment-page-1/#comment-1986

Мой последний совет, проконсультируйтесь с профессионалом - деньги потрачены не зря.