Переваги від продуктивності використання NGINX


16

Розглядаючи можливість використання NGINX для обслуговування магенто, я не переймаюся деталями впровадження, але хочу знати, чи хтось може сказати про це хороші (чи погані) речі. Також особливий інтерес представляє використання NGINX для завантаження балансу магенто.


у нас є 2 магазини, що працюють на спеціалізованому сервері з NginX. Для магазинів з високим трафіком, безумовно, є користь, оскільки NginX краще обробляє запити і залишає більше ресурсів для Magento. Для магазинів з низьким трафіком я не впевнений, що є якась користь
Sander Mangel

Відповіді:


15

Nginx, безумовно, хороший вибір для хостингу Magento, і він пропонує ряд приємних (але невеликих) переваг, які можуть допомогти покращити ефективність сайту.

Основна відмінність Nginx від Apache полягає в тому, що Nginx використовує неблокуючий Evented IO, а Apache просто використовує багатопотоковість / обробку. У чому різниця і чому це важливо? Що ж стосується Apache, скажімо, у нього 5 потоків, він може обробляти 5 запитів на щось у будь-який момент. Якщо одна з цих ниток потребує тривалого часу для завершення, залишилось лише 4 потоки для обробки будь-яких поданих запитів. Якщо всі 5 потоків заблокуються, жодні вхідні запити не можуть оброблятися, поки одна не завершиться.

З Evented IO, коли потік отримує запит на щось, він запускає подію і переходить безпосередньо до наступного запиту. Коли подія передзвонює, вона передає відповідь відповідному клієнту.

Це приблизно схоже на те, як працює асинхронний JavaScript. Ви відключите запит AJAX і продовжуєте роботу, поки не отримаєте зворотний дзвінок.

Цей сучасний підхід добре підходить для подачі безлічі маленьких статичних файлів без накладних витрат на нерестування багато потоків або робочих системних процесів.

Іншою перевагою Nginx є його низький слід пам’яті. Apache підтримує багато речей, і при цьому має високу пам'ять та обчислювальний слід. Ви можете запустити його назад, але Nginx архітектурно створений з нуля, щоб бути витонченим з точки зору пам'яті.

Відмінності не є величезними, але в міру масштабування до багатьох тисяч запитів ці невеликі відмінності в сукупності мають велику різницю.

Тепер важливо пам’ятати, що найбільшим вузьким місцем у програмі Magento є виконання PHP-коду. Тут є принципово незначна різниця у продуктивності між Apache та Nginx. Важливим є використання PHP-FPM та робочого MPM з Apache (і, безумовно, уникати prefork / mod-php). Основна причина полягає в тому, що ви викликаєте інтерпретатора PHP лише тоді, коли вам потрібно виконати PHP-код, і ви зможете ефективно використовувати програмне кешування оп-коду, як APC (і це найбільше підвищення продуктивності, яке ви отримаєте).

Останній пункт: деякі модулі / програми очікують використання Apache, а документація може бути спрямована на використання ModRewrite або використання файлів .htaccess. Хоча в Nginx існує підтримка стилю ModRewrite, немає підтримки для рішень у стилі .htaccess.

Особисто мені подобається Nginx, оскільки він ефективно обслуговує статичний контент, налаштувати PHP-FPM дуже просто, і мені дуже подобається його синтаксис конфігурації. Це не чарівне вирішення проблематичних проблем, але це надійний гнучкий варіант.


1
Чудова відповідь, яку підтримують результати Magento, Inc.: magentocommerce.com/whitepaper
орієнтири

Якщо ви погоджуєтесь з Aaron на 100%, ми також використовуємо Nginx для більшості наших розробок Magento через його здатність швидше серверне статичний вміст і обробляти більшу кількість одночасних запитів порівняно з Apache. Єдиний недолік, з яким ми стикалися з Nginx, - це один з наших проектів, який випадковим чином викидає помилку таймауту 504 шлюзу (навіть коли завантаження сервера досить низьке). Цього ще нам ще не вдалося. Більшість рішень, описаних на різних форумах, не дуже допомогли.
Вінчі Руфус

1

Я б сказав, що перевагу продуктивності Nginx при використанні Magento нехтують. Перевага IO на основі подій, як згадується Aaron, також застосовується до Apache (при використанні MPM події).

Якщо говорити про Magento в цілому, то більшість обробок (99%) відбувається в PHP та базі даних, тому оптимізація перших 1% принесе вам порівняно невелику користь.

Однак існують інші причини для вибору Nginx для Magento, такі як менший слід пам’яті, кращий ліміт швидкості та підтримка SPDY.

Існує великий недолік для Nginx при перетворенні існуючих Magento-сайтів, що працюють на Apache, оскільки багато .htaccess заяви прямо не відображаються на операторах Nginx. Наприклад, Nginx не підтримує імена хостів в ACL.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.