1. Bitcoin адрес для пожертвований: 1dapfB97R98wg8J3hknWpMDJ7P61CWjNn
    Скрыть объявление
  2. Участникам форума доступна Skype конференция. Присоединяйтесь!
  3. Наши основные группы и каналы: VK, Twitter. Подписывайтесь!
  4. Форум работает за счет ваших пожертвований, поэтому у нас нет внешней рекламы.
    Пожертвовать рубль на развитие форума Вы можете по ссылке.
  5. Скрыть объявление
Скрыть объявление
О том как быстро
набрать нужное
число сообщений
написано здесь
Пожертвовать рубль
на развитие
форума можно тут.

Apache + nginx? Спасибо, есть lighttpd

Тема в разделе "Linux, Freebsd, *nix", создана пользователем Insallah, 10 сен 2015.

  1. Insallah Schutzstaffel Gruppenführer Старейшина

    Репутация

    682 / 368


    Apache

    Это самый популярный сервер, очень гибкий, очень настраиваемый, НО... тут и кончаются все прелести и начинаются минусы. Если вы планируете строить сайт, на котором будут пастись сотни пользователей, придётся принять во внимание, что Apache очень плохо для этого подходит.

    Apache бывает двух видов, prefork и worker. Если вы не в курсе таких тонкостей, то «обычный» Apache - это prefork модель, где каждый запрос обрабатывается отдельным процессом. При такой схеме каждый процесс Apache обрастает уникальными от других процессов буферами и использует довольно много памяти. Worker использует модель, где каждый запрос обрабатывается несколькими процессами, что существенно уменьшает аппетиты к оперативной памяти. НО (да-да, *wink*)… при такой конструкции становится невозможным использовать thread safe библиотеки, к примеру mod_php. Именно поэтому Apache worker почти не используется. Ещё стоить отметить, что если ваш Apache «атакуют» dial-up'еры или прочие модемщики и забьют все worker'ы, которые будут просто висеть и ничего не делать, то все остальные пользователи тоже будут получать ответы со скоростью модема.

    Ко всем этим «прелестям» ещё добавим не очень хорошую реализацию буфера отдачи статического содержимого сайта, который точно также не стесняясь, поедает процессор и память и можно читать дальше…

    nginx

    Сейчас стало модно ставить сий nginx «перед» Apache как распределитель запросов и отдачи статического содержимого, такого как файлы изображений, стилей или скриптов. Nginx использует более совершенную технологию обработки запросов, и помогает неповоротливому Apache, чем только может. НО (ага :))… в данной связке nginx выступает как прокси между пользователем и Apache и создаёт дополнительный запрос к уже существующему. Это не сколько лишняя память, как лишнее время. Кроме того nginx всегда тащится в хвосте со скрипом поддерживая или не поддерживая вообще, то что у конкурентов уже широко используется. Например до сих пор многие с нетерпением ждут, когда уже nginx начнёт поддерживать IPv6, до этого всё мечтали, когда он сможет работать с CGI скриптами, перестанет коверкать PATH_INFO и SCRIPT_NAME. В режиме прокси этот нехороший товарищ ещё не даёт отдавать нормально заголовки и реально сталкивался не раз с проблемой при наложении водяных знаков на изображения «на лету». В общем проще уж вообще отрубить Apache и поставить связку nginx+php-cgi но тут начнётся новые слёзы, когда вы начнёте переписывать правила перенаправлений под «понятный» nginx. В общем, начинаем читать дальше…

    lighttpd

    Этот маленький сервер работает точно также как nginx, а точнее nginx использует такую же как у lighttpd технологию обработки запросов и появился гораздо раньше. Причём если вы нацелены на огромное количество пользователей, то lighttpd свободно сможет обслужить такое количество, от которого и nginx загнётся. Переписывание перенаправлений дикий шок и ужас не вызовет, очень простая и понятная система конфигурации. Кто-то, правда, писал, что ему «что-то в конфиге не хватило», ну жираф большой… точно так же можно легко поставить связку с php-cgi чтобы получить полноценный веб-сервер.

    Напоследок маленький тест производительности lighttp против nginx (ApacheBench 2.3, html - файл размером 3700 байт, миллион запросов):

    Server Software: lighttpd/1.4.22
    Finished 1000000 requests
    Time taken for tests: 187.617 seconds
    Total transferred: 3935633535 bytes
    HTML transferred: 3700595700 bytes
    Requests per second: 5330.02 [#/sec] (mean)
    Time per request: 187.617 [ms] (mean)
    Time per request: 0.188 [ms] (mean, across all concurrent requests)
    Transfer rate: 20485.34 [Kbytes/sec] received


    Server Software: nginx/0.7.62
    Finished 1000000 requests
    Time taken for tests: 216.531 seconds
    Total transferred: 3912535944 bytes
    HTML transferred: 3700506900 bytes
    Requests per second: 4618.27 [#/sec] (mean)
    Time per request: 216.531 [ms] (mean)
    Time per request: 0.217 [ms] (mean, across all concurrent requests)
    Transfer rate: 17645.66 [Kbytes/sec] received


    В этом тесте lighttpd просто как тузик грелку разрывает хвалёный nginx:
    1. Время выполнения:
    nginx – 216.531 seconds
    lighttpd – 187.617 seconds
    lighttpd на 28,914 секунд выполнил тест быстрее

    2. Пропускная способность
    nginx – 17645.66 [Kbytes/sec]
    lighttpd – 20485.34 [Kbytes/sec]
    lighttpd на 2839,68 КБ (2,8 МБ) в секунду быстрее

    06shurik и RICH нравится это.
  2. 06shurik Новичок

    Репутация

    0 / 0


    Одобряю, стоит задуматься, хотя nginx уже более версии чем 0,7, на новых версиях не проводились больше тесты?

     
  3. iv777 Школьник

    Репутация

    30 / 18


    Был новый релиз Lighttpd 5 декабря 2015.
    Надо тестировать.

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



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

     
    Последнее редактирование: 15 янв 2016
  4. Lucky Команда форума

    Репутация

    -29 / 1.231


    Cherokee еще есть.

     
  5. RoBoT Старейшина

    Репутация

    176 / 57


    Давний холивар. Тесты надо самому провернуть.
    На личном опыте прироста производительности на > 10 тыс. запросов в 10 сек, не заметно разве, что lighttpd жрет памяти меньше. Но это проблема решается nginx + fpm :)

     
  6. AriyM Новичок

    Репутация

    0 / 1


    Было дело, ставили nginx+Apache2. Тестили и сравнивали с связкой Varnish+nginx.
    Вторая схема проработала намного дольше, без вмешательства, до отказа ("злоумышленник" забил входящий канал ) так и не разобравшись .
    Очень возможно в связке лайти+Варниш, скорость обработки пакетов увеличится.