У меня есть новый сервер, чтобы играть с, и я глядя на пустой холст. Я могу положить все, что я хочу на нем. Пока мне комфортно с Apache, я постоянно слышу, как nginx может обрабатывать гораздо больше трафика, чем Апач, на коэффициент 10, 100, даже больше. Мало того, что она'ы "и гораздо быстрее.&и"
Когда я ищу статьи, я могу найти много вещей не имеющих отношения к Друпалу. Или, когда я наткнулся на Друпал обзоры статьи это'С либо 1) кто-то'ы конфигурационный файл с краткое объяснение, как его настроить, или 2) он'ы кто-то говорил "нет, Дон'т использовать nginx, перейти с Apache с PHP fcgid" но есть не объяснение, как, почему.
Так что, когда дело доходит до Друпала, что такое реальность?
В качестве примера, я ищу что-то вдоль линий этот 2bits.com статьи. Здесь Автор предпринял довольно обширный взгляд на Apache с mod_php, который против Апача с fcgid, взвешивая плюсы и минусы каждого, и представили социологическое исследование, чтобы проиллюстрировать влияние в реальном мире. Есть достаточно информации в этой статье для меня, чтобы принять обоснованное решение о том, какой подход будет лучше для моей ситуации.
А что автор сравнивает mod_php на fcgid, я ищу одного типа комплексных, реальный мир посмотрите на Апач против nginx'а.
Кто-нибудь перешел на nginx и был на "сдувается" и на разницу, по сравнению с Апачем? Даже для высоко оптимизированной средах, которые уже используют компании APC, memcache и агрессивное кэширование, как лак, когда единственная переменная, что меняется-это замена Апач с nginx, делает достаточно разницы само по себе заслуживает инвестирование в этой новой, альтернативной технологии?
Сайт, который пойдет на этот сервер получает авг в 2 миллиона просмотров в месяц. Светильник стек работает цент ОС 6. 4 ядерный процессор с 8 гигабайтами оперативной памяти. Memcached и APC будет быть частью смеси. Ничего особенного в Друпал установить - в основном ваниль 7 около 50 модулей.
Строго говоря, это не'т отвечать на вопрос, который вы задаете. Я'м надеясь, что это's в любом случае полезно.
Апач/с nginx/документации/другие веб-сервера. Не важно, что я выберу? Короче, нет.
Гораздо дольше ответа:
If, и только if, у вас есть очень большой процент пользователей в систему, если вы заботитесь вообще о производительности вашего веб-сервера. Если пользователи являются анонимными, никакой разницы, что вы теоретически можете получить от оптимизации в том, что слои абсолютной меркнет по сравнению с делая ваши ресурсы лучше кэшируется. Если ваши CSS-файлы имеют правильные заголовки кэша на них, УА выиграл'т даже попросить их второй раз. Это важно. Если вы можете кэшировать страницы в лак или аналогичное программное решение, в то время, что страницы в том, чтобы хэш-поиска, а затем вернуть большую часть данных непосредственно из оперативной памяти. Это важно. В обоих этих случаях демон HTTP-это даже не участвует, PHP не вызывается. Друпал не бутстрап. Не большой набор модулей должен быть загружен в оперативную память, не требует времени на запросы к базе данных выполняются.
При выполнении полной загрузки страницы, от холода кэша, для пользователя, вошедшего в систему, на сложную страницу; а lot всего происходит. Да, веб-сервер, занимающихся входящий запрос, установить некоторые заголовки и передает ответ обратно. Но время уходит, даже не актуальны в контексте Друпал работает полный Bootstrap и выводить свой ответ. Там может быть сотни запросов к базе данных выполняется. Очень сложная логика в PHP обрабатывается парсером. Много модули загружаются в оперативную память. Повышение эффективности деятельности любой из этих вещей, намного более вероятно, чтобы сделать серьезный вклад в производительность.
Ради аргумента: пусть'ы сказать, что вы потратили много времени на оптимизацию производительности все остальное.
Если у вас много зарегистрированных пользователей, и вы'вэ рассмотрены все из вышеперечисленных, то вы можете, вероятно, сделать разницу, но настройка производительности, или замены вашего веб-сервера. Впрочем, к чему гадать. Ваш сайт настолько сложная и модели использования ваших конкретных пользователей, это unique. Нет универсального ответа. Вам понадобится для установки все различных веб-серверов за балансировщиком нагрузки, и посмотреть, как они ведут себя под your scenario.
Выше была попытка логически прийти к выводу, что расходы за время выполнения оптимизации веб-сервер, вероятно, плохое использование времени. Я хотел бы, чтобы в выше хоть кого-то долбить, я бы, наверное, узнать что-то новое от него. :)
Некоторые другие заметки:
$ туалетом -л $(найти . -тип F | команда grep -v с " у^\.мерзавец" и | команда grep -v с " и\^.я hphp/third_party&;) | сортировать -НР | глава -Н1
и обнаружил, что он состоит из 1.512.481 строк кода. Что'ы совершенно безумное количество работы, чтобы улучшить скорость работы PHP. Я'м предполагаю, что's, потому что скорость имеет значение в PHP значительно к ним.[9]: http://people.apache.org/~Джим/presos/ACNA11/Apache_httpd_cloud.формат PDF
Ок, хотя на этот вопрос уже ответили, Я'м некромантии раз больше, прежде всего потому, что я Дон'т, как последствия этих ответов, что это не'т-либо изменить, и потому, как веб-разработчик, я ненавижу кэширование со страстью.
Разница между Apache и nginx-это не столько "Как быстро они смогут обслужить запрос" но как много запросов они могут выступать на такое же количество оборудования (особенно в условиях ограниченности ресурсов), которая представляет собой несколько разные вещи.
Apache-это процесс на сервере. Смысл его порождает процесс для каждого запроса. Nginx-это событие сервера, а это означает, это использует (асинхронный) событие-цикл, а не процессы или потоки.
И пока процесс-сервер (например, Apache) можете проанализировать более или менее наравне с асинхронного события на сервере (например, nginx), который при небольших нагрузках, при тяжелых нагрузках, как например, 10'0000 одновременных запросов, nginx использует всего несколько мегабайт оперативной памяти, в то время как Апач требует несколько сотен мегабайт на веб-сервере в одиночку (не включая веб-приложения, который должен гораздо больше ресурсов itselfs), если он может сделать это на всех.
Поэтому под большими нагрузками, вы увидите Апач потребляет слишком много оперативной памяти, что неудивительно, что значительно снижает производительность.
Более значительно, большее потребление оперативной памяти означает, что Apache может обслуживать меньше запросов на том же оборудовании, чем nginx, что означает, что Апач требует больше оборудования за тот же количество пользователей, что означает, что у вас есть высшее TCO (совокупная стоимость владения), чем с Apache с nginx, который снижает ваш ROI (возврат на инвестиции).
Общий объем памяти, используемый х одновременных подключений (чем меньше тем лучше)
Запросы, которые могут быть поданы в секунду при Х одновременных подключений на 1 комплект оборудования (больше-лучше)
Источник: ApacheBench, по dreamhost.com
См. Также этот цифровой океан writup. <БР /> Видимо, это зависит от подключения архитектура обработки вы выберете для Apache.
Я перейти с Apache на nginx / ПХП-ФПМ несколько месяцев назад.
Я сделал некоторые benchmarck с Drupal сайта и проверить несколько случае использовать. На VPS-сервер с 1 процессором и 512 ОЗУ МО
Друпал только с кешем
С nginx
ab -n 100 -c 30 xxx
Server Software: nginx
Document Path: /
Document Length: 24902 bytes
Concurrency Level: 30
Time taken for tests: 2.775 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Total transferred: 2529500 bytes
HTML transferred: 2490200 bytes
Requests per second: 36.04 [#/sec] (mean)
Time per request: 832.394 [ms] (mean)
Time per request: 27.746 [ms] (mean, across all concurrent requests)
Transfer rate: 890.28 [Kbytes/sec] received
httperf --client=0/1 --server=xxx --port=80 --uri=/ --send-buffer=4096 --recv-buffer=16384 --num-conns=100 --num-calls=10
Maximum connect burst length: 1
Total: connections 100 requests 1000 replies 1000 test-duration 48.946 s
Connection rate: 2.0 conn/s (489.5 ms/conn, <=1 concurrent connections)
Connection time [ms]: min 470.6 avg 489.5 max 522.2 median 488.5 stddev 9.5
Connection time [ms]: connect 0.2
Connection length [replies/conn]: 10.000
Request rate: 20.4 req/s (48.9 ms/req)
Request size [B]: 74.0
Reply rate [replies/s]: min 20.0 avg 20.4 max 20.8 stddev 0.2 (9 samples)
Reply time [ms]: response 46.8 transfer 2.1
Reply size [B]: header 450.0 content 24902.0 footer 2.0 (total 25354.0)
Reply status: 1xx=0 2xx=1000 3xx=0 4xx=0 5xx=0
CPU time [s]: user 6.50 system 17.58 (user 13.3% system 35.9% total 49.2%)
Net I/O: 507.3 KB/s (4.2*10^6 bps)
Апач
ab -n 100 -c 30 xxx
Server Software: Apache/2.2.16
Document Path: /
Document Length: 24902 bytes
Concurrency Level: 30
Time taken for tests: 28.364 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 25346000 bytes
HTML transferred: 24902000 bytes
Requests per second: 35.26 [#/sec] (mean)
Time per request: 850.918 [ms] (mean)
Time per request: 28.364 [ms] (mean, across all concurrent requests)
Transfer rate: 872.66 [Kbytes/sec] received
httperf --client=0/1 --server=xxx --port=80 --uri=/ --send-buffer=4096 --recv-buffer=16384 --num-conns=100 --num-calls=10
Maximum connect burst length: 1
Total: connections 100 requests 1000 replies 1000 test-duration 52.261 s
Connection rate: 1.9 conn/s (522.6 ms/conn, <=1 concurrent connections)
Connection time [ms]: min 499.0 avg 522.6 max 591.0 median 518.5 stddev 19.4
Connection time [ms]: connect 0.6
Connection length [replies/conn]: 10.000
Request rate: 19.1 req/s (52.3 ms/req)
Request size [B]: 74.0
Reply rate [replies/s]: min 18.2 avg 19.2 max 19.6 stddev 0.5 (10 samples)
Reply time [ms]: response 46.9 transfer 5.3
Reply size [B]: header 453.0 content 24902.0 footer 2.0 (total 25357.0)
Reply status: 1xx=0 2xx=1000 3xx=0 4xx=0 5xx=0
CPU time [s]: user 6.80 system 18.88 (user 13.0% system 36.1% total 49.1%)
Net I/O: 475.2 KB/s (3.9*10^6 bps)
Errors: total 0 client-timo 0 socket-timo 0 connrefused 0 connreset 0
Errors: fd-unavail 0 addrunavail 0 ftab-full 0 other 0
Друпал с кешем и форсировать
С nginx
ab -n 10000 -c 30 xxx
Server Software: nginx
Document Path: /
Document Length: 25002 bytes
Concurrency Level: 30
Time taken for tests: 2.275 seconds
Complete requests: 10000
Failed requests: 0
Write errors: 0
Total transferred: 253780000 bytes
HTML transferred: 250020000 bytes
Requests per second: 4395.52 [#/sec] (mean)
Time per request: 6.825 [ms] (mean)
Time per request: 0.228 [ms] (mean, across all concurrent requests)
Transfer rate: 108934.95 [Kbytes/sec] received
httperf --client=0/1 --server=xxx --port=80 --uri=/ --send-buffer=4096 --recv-buffer=16384 --num-conns=1000 --num-calls=30
Maximum connect burst length: 1
Total: connections 1000 requests 30000 replies 30000 test-duration 5.971 s
Connection rate: 167.5 conn/s (6.0 ms/conn, <=1 concurrent connections)
Connection time [ms]: min 4.2 avg 6.0 max 13.0 median 4.5 stddev 2.6
Connection time [ms]: connect 0.1
Connection length [replies/conn]: 30.000
Request rate: 5024.0 req/s (0.2 ms/req)
Request size [B]: 74.0
Reply rate [replies/s]: min 5017.2 avg 5017.2 max 5017.2 stddev 0.0 (1 samples)
Reply time [ms]: response 0.2 transfer 0.0
Reply size [B]: header 405.0 content 25002.0 footer 0.0 (total 25407.0)
Reply status: 1xx=0 2xx=30000 3xx=0 4xx=0 5xx=0
CPU time [s]: user 0.79 system 2.56 (user 13.2% system 42.9% total 56.1%)
Net I/O: 125016.7 KB/s (1024.1*10^6 bps)
Errors: total 0 client-timo 0 socket-timo 0 connrefused 0 connreset 0
Errors: fd-unavail 0 addrunavail 0 ftab-full 0 other 0
Апач
ab -n 1000 -c 30 xxxx
Server Software: Apache/2.2.16
Document Path: /
Document Length: 25002 bytes
Concurrency Level: 30
Time taken for tests: 0.753 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 25291000 bytes
HTML transferred: 25002000 bytes
Requests per second: 1327.92 [#/sec] (mean)
Time per request: 22.592 [ms] (mean)
Time per request: 0.753 [ms] (mean, across all concurrent requests)
Transfer rate: 32797.26 [Kbytes/sec] received
httperf --client=0/1 --server=xxx --port=80 --uri=/ --send-buffer=4096 --recv-buffer=16384 --num-conns=100 --num-calls=10
Maximum connect burst length: 1
Total: connections 100 requests 1000 replies 1000 test-duration 1.148 s
Connection rate: 87.1 conn/s (11.5 ms/conn, <=1 concurrent connections)
Connection time [ms]: min 6.2 avg 11.5 max 14.1 median 11.5 stddev 1.3
Connection time [ms]: connect 0.1
Connection length [replies/conn]: 10.000
Request rate: 870.8 req/s (1.1 ms/req)
Request size [B]: 74.0
Reply rate [replies/s]: min 0.0 avg 0.0 max 0.0 stddev 0.0 (0 samples)
Reply time [ms]: response 1.1 transfer 0.1
Reply size [B]: header 260.0 content 25002.0 footer 0.0 (total 25262.0)
Reply status: 1xx=0 2xx=1000 3xx=0 4xx=0 5xx=0
CPU time [s]: user 0.13 system 0.57 (user 11.1% system 49.5% total 60.6%)
Net I/O: 21544.9 KB/s (176.5*10^6 bps)
Errors: total 0 client-timo 0 socket-timo 0 connrefused 0 connreset 0
Errors: fd-unavail 0 addrunavail 0 ftab-full 0 other 0
бенчмарк для проверки подлинности пользователя (загрузки страницы)
С nginx
Page load times : 2.85 s
Апач
Page load times : 5.4 s
Но сила nginx является кэш
Друпал без повышение и Nginx с системой кэш включен
Server Software: nginx
Document Path: /
Document Length: 24902 bytes
Concurrency Level: 30
Time taken for tests: 2.437 seconds
Complete requests: 10000
Failed requests: 0
Write errors: 0
Total transferred: 252670000 bytes
HTML transferred: 249020000 bytes
Requests per second: 4103.34 [#/sec] (mean)
Time per request: 7.311 [ms] (mean)
Time per request: 0.244 [ms] (mean, across all concurrent requests)
Transfer rate: 101248.99 [Kbytes/sec] received
httperf --client=0/1 --server=xxx --port=80 --uri=/ --send-buffer=4096 --recv-buffer=16384 --num-conns=1000 --num-calls=30
Maximum connect burst length: 1
Total: connections 1000 requests 30000 replies 30000 test-duration 6.044 s
Connection rate: 165.5 conn/s (6.0 ms/conn, <=1 concurrent connections)
Connection time [ms]: min 4.2 avg 6.0 max 11.7 median 4.5 stddev 2.6
Connection time [ms]: connect 0.1
Connection length [replies/conn]: 30.000
Request rate: 4963.7 req/s (0.2 ms/req)
Request size [B]: 74.0
Reply rate [replies/s]: min 4970.1 avg 4970.1 max 4970.1 stddev 0.0 (1 samples)
Reply time [ms]: response 0.2 transfer 0.0
Reply size [B]: header 405.0 content 25002.0 footer 0.0 (total 25407.0)
Reply status: 1xx=0 2xx=30000 3xx=0 4xx=0 5xx=0
CPU time [s]: user 0.72 system 2.68 (user 12.0% system 44.3% total 56.3%)
Net I/O: 123516.8 KB/s (1011.8*10^6 bps)
Errors: total 0 client-timo 0 socket-timo 0 connrefused 0 connreset 0
Errors: fd-unavail 0 addrunavail 0 ftab-full 0 other 0
Вы должны использовать perusio'ы конфигурации nginx для Друпала
Вот это тест производительности за десять веб-серверов/варианты (например, Апач, nginx или lighttpd, света, Гайавата, Чероки). Три испытания связаны с Друпал.
Я'м думая, Гайавата может быть лучший выбор. Должен иметь полную совместимость с Drupal]2, имеет упор на безопасности (Дос, или XSS, CSRF атак, предотвращения SQL-инъекции), а скорость &ампер; след, похожий на nginx.
В двух из трех тестов на Drupal, как Гайавата и nginx превзойти Апач около 150%, а при статическом тестировании Друпал, незначительно превосходит Апач с nginx, в то время как Гайавата рекорды пакет примерно на 10%.
Я не'т повесить шляпу на любой из этих тестов, но оно дает одну примерную картину эффективности в различных ситуациях использования. Я думаю, что только производительность должна'т быть единственным соображением. Стабильность и безопасность могут быть более важные факторы.
здесь является нагрузочное тестирование результаты для Drupal работает на одном оборудовании, но с разными веб-серверами. (nginx и Apache)
вот вывод из этого теста:
под большой трафик с одинаковыми аппаратными ресурсами, то nginx выполняет лучше, чем Apache.