Как оценить производительность веб-серверов? - PullRequest
5 голосов
/ 17 сентября 2009

Я планирую развернуть сайт на платформе Django. Но я смущен выбором веб-серверов, которые включают apache, lighttpd, nginx и другие.

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

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

  1. Существует ли какой-либо простой подход для тестирования производительности без производственной площадки?
  2. Или у меня может быть метод для имитации интенсивного трафика для проведения честного теста?
  3. Как я могу сохранить честность и близость к производственной ситуации?

После теста хочу выяснить:

  1. Почему некоторые говорят, что nginx имеет лучшую производительность при работе со статическими файлами.
  2. Процессор и память каждого веб-сервера.
  3. Мой лучший выбор.

Ответы [ 3 ]

3 голосов
/ 17 сентября 2009

Такие инструменты, как ab , обычно используются для проверки того, какую нагрузку вы можете получить от множества запросов одновременно, наряду с cacti / munin / инструментом мониторинга вашей системы или выбором, который вы можете генерировать данные о загрузке системы и запросов / сек. Проблема в том, что многие люди, проводящие сравнительный анализ, не понимают, что им нужно запрашивать много разных запросов, так как выполнение различных частей вашего кода займет разное количество времени. Профилирование и тестирование кода, а не запросов также важно, для чего многие люди уже сделали для django , benchrun также не плохой инструмент.

Другая проблема заключается в том, сколько HTTP-запросов занимает каждый просмотр страницы. Меньшее количество запросов и более быстрая их обработка являются ключом к созданию веб-сайтов, которые могут поддерживать большой объем трафика: чем быстрее вы сможете завершить и закрыть подключения, тем быстрее вы выделите ресурсы для новых.

С точки зрения общей скорости веб-серверов, само собой разумеется, что прокси-сервер (работающий в обратном направлении на вашем конце) всегда будет работать быстрее, чем веб-сервер со статическим контентом. Что касается Apache против nginx в отношении вашего приложения django, кажется, что mod_python действительно быстрее, чем nginx / lighty + FastCGI, но это не удивительно, потому что CGI, независимо от каких-либо ускорений, все еще медленен. Выполнение и кэширование кода на веб-сервере и предоставление ему возможности управлять им всегда быстрее (mod_perl против использования CGI, mod_php против CGI и т. Д.), Если вы все сделаете правильно.

2 голосов
/ 23 сентября 2009

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

1 голос
/ 17 сентября 2009

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

Затем необходимо использовать среду нагрузочного тестирования, например, Grinder (бесплатно), чтобы моделировать множество пользователей, одновременно использующих ваш сайт.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...