Самые популярные веб сервера. W3Tech: доля nginx в мире выросла до трети, Apache упал ниже половины

|

Приложения, разработанные в Ruby, можно развернуть в общий доступ при помощи одного из множества веб-серверов. Каждый веб-сервер уникален и имеет свои преимущества, однако у всех них есть кое-что общее: они основаны на интерфейсе Rack.

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

Примечание : Более подробную информацию о связующем программном обеспечении можно узнать .

Интерфейс Rack

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

Для этого в 2007 вышел Rack, модульный интерфейс веб-серверов Ruby. Сегодня он используется многими веб-серверами и фреймворками (Espresso, Mack, Ruby on Rails, Sinatra и т.п.).

Несмотря на соглашения об именовании и различные объяснения для разных языков программирования и доменов, спецификации для взаимодействия приложений очень похожи (если не идентичны). Хотя в отличие от спецификации Python WSGI, по примеру которой созданы Rack и множество других спецификаций, Rack является ещё и промежуточным программным обеспечением.

Промежуточное программное обеспечение Rack (доступно как gem) реализует спецификацию Rack; оно делит входящие HTTP-запросы на различные этапы, затем обрабатывает их по частям, после чего посылает ответ веб-приложения (контроллера). Программа Rack состоит из двух отдельных компонентов: обработчика и адаптера, с помощью которых происходит обмен данными между веб-серверами и приложениями (фреймворками).

Обзор веб-серверов для Ruby

Теперь можно поговорить о наиболее популярных современных веб-серверах, понять их особенности и подобрать наиболее подходящее решение для своего приложения.

Примечание : Веб-серверы расположены в алфавитном порядке.

Phusion Passenger: быстрый веб-сервер и сервер приложений

Многие разработчики Ruby on Rails рекомендуют использовать для поддержки приложений именно Passenger. Это зрелый и многофункциональный сервер, который отвечает самым строгим требованиям развёртывания и позволяет упростить установку и запуск приложения. Он устраняет традиционную архитектуру на основе сервера-посредника путём прямой интеграции в веб-серверы Apache и Nginx. Поэтому в сообществе Ruby (Rails) он также часто упоминается как mod_rails и mod_rack.

Особенности Passenger

Passenger предоставляет возможность работать с несколькими приложениями, размещёнными на одном сервере.

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

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

Версия Passenger с открытым исходным кодом предоставляет мультипроцессный однопоточный режим, а коммерческая версия поддерживает однопоточный и многопоточный режимы.

Также коммерческая версия предоставляет множество «продвинутых» функций: параллелизм, многопоточность, массовое развертывание, управление ресурсами, ограничение ресурсов и др.

Примечание : Больше информации о Passenger можно найти на сайте проекта . О версии Passenger Enterprise – .

Puma: современный веб-сервер для Ruby

Puma – это высокопроизводительный веб-сервер для приложений Ruby. Он основан на веб-сервере Mongrel, который в своё время добавил несколько революционных функций и во многом повлиял на разработку приложений Ruby. Разработчик Puma (Evan Phoenix) трансформировал операционную структуру Mongrel, перейдя на Rack (и, таким образом, устраняя некоторые проблемы с производительностью), и разработал приложение для поддержки параллелизма.

Особенности Puma

Puma не требует много места и использует мало ресурсов.

Веб-сервер Puma предоставляет несколько режимов работы: он позволяет задать минимальное и максимальное количество потоков, а также поддерживает кластерный режим, в котором вы можете использовать разветвлённые процессы для одновременной обработки запросов.

Он основан на парсере Mongrel и во многом унаследовал его код.

Веб-сервер Puma разработан для Rubinius, но может работать и с JRuby

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

«Из коробки» Puma не поддерживает размещения и производства нескольких приложений, но это можно сделать с помощью специального инструмента Jungle.

Thin: простой и быстрый HTTP-сервер

Thin – это очень популярный сервер приложений; его создатели утверждают, что это наиболее «безопасный, стабильный, быстрый и расширяемый веб-сервер Ruby». Thin активно развивается. Он основан на трех основных библиотеках Ruby:

  • Парсер Mongrel.
  • Сетевая библиотека EventMachine
  • Промежуточное программное обеспечение Rack

Особенности Thin

HTTP-сервер Thin предназначен для работы с любым фреймворком, который реализует спецификацию Rack. Для этого он загружает конфигурационные файлы Rack.

Будучи основанным на EventMachine,Thin может обрабатывать длинные запросы без помощи обратного прокси-сервера (в отличие от некоторых других веб-серверов).

Примечание : Чтобы узнать о Thin больше, перейдите на сайт проекта .

Unicorn: HTTP-сервер на основе Rack для быстрых клиентов и Unix

Unicorn – это зрелый полнофункциональный сервер приложений для Ruby. Позже он был адаптирован для работы с Python. Принцип работы Unicorn таков: веб-сервер выполняет не все задачи, а только те, за которые отвечает непосредственно он, остальные задачи он передаёт другим программам, которые лучше справляются с их выполнением.

Особенности Unicorn

Главный процесс Unicorn порождает рабочие процессы для обработки запросов согласно заданным параметрам. Также этот процесс отслеживает рабочие процессы, чтобы предотвратить проблемы с ресурсами. То есть, если процесс требует много времени или ресурсов, сервер остановит его Unicorn.

Как уже упоминалось выше, Unicorn использует операционную систему для балансировки нагрузки; для этого он может передавать задачи другим сервисам. Благодаря этому запросы не скапливаются.

Как и NGINX, Unicorn позволяет развертывать приложения, не сбрасывая текущих подключений клиентов. Это очень полезная функция при обновлении приложения.

Другие полезные функции Unicorn:

  • Все рабочие процессы запускаются в пределах определенного изолированного адресного пространства и обслуживают запросы по одному.
  • Хуки before_fork и after_fork позволяют бороться с ветвлением процессов.
  • Механизм копирования при записи для управления памятью позволяет экономить память.
  • Веб-сервер может прослушивать несколько интерфейсов.

Примечание : Больше о Unicorn – .

Tags: ,

Согласно статистическим данным проекта W3techs, более 80% веб-приложений и сайтов работают на серверах с открытым исходным кодом. Не зря именно о «доминировании в сети» чаще всего говорят сторонники Open Source, когда заходит речь о доле Linux на рынке.

На какие проекты следует обратить внимание в первую очередь? Какие открытые серверы лучше всего подойдут для решения пользовательских задач?

Эксперт в области e-Government Робин Мульвижк на страницах сайта OpenSource.com предлагает пять наиболее популярных открытых веб-серверов.

Apache HTTP Server

В феврале 2015 года этот проект отметил своё двадцатилетие. Это самый популярный веб-сервер в мире - по данным W3techs, на нём работает 52% всех сайтов в мире.

Чаще всего платформой для Apache HTTP Server является Linux. Но приложение мультиплатформенное - сервер можно развернуть на OS X или Windows. Решение построено по модульному принципу, поэтому при необходимости его функциональность расширяется. Например, при помощи модуля mod_proxy на сервере создаётся шлюз, модуль mod_proxy_balancer сбалансирует нагрузку для всех поддерживаемых протоколов, а модуль mod_http2 отвечает за поддержку HTTP/2.

Проект сопровождается прекрасной документацией и комплексной поддержкой со стороны других пользователей. Распространяется решение на условиях Apache License v. 2.

NGINX

Разработка этого сервера началась в 2002 году российским программистом Игорем Сысоевым. Первый публичный выпуск приложения состоялся в 2004 году и по сути являлся ответом на проблему C10K - задачи по построению высокопроизводительного сервера, способного одновременно обслуживать 10 тысяч соединений.

Согласно данным W3techs, этот сервер занимает второе место по популярности в мире среди решений с открытым исходным кодом. На нём работает чуть больше 30% всех сайтов.

Чаще всего системные администраторы выбирают NGINX из-за высокой производительности и способности к масштабированию. Решение прекрасно подходит для обработки множества параллельных сеансов.

Распространяется приложение на условиях очень короткой BSD-подобной лицензии.

Apache Tomcat

Apache Tomcat - открытое приложение, разрабатываемое Apache Software Foundation и представляющее собой контейнер сервлетов, который функционирует в качестве веб-сервера, расширяя таким образом его функциональность. Написан на языке Java. Изначально права на решение принадлежали компании Sun Microsystems, которая в 1999 году безвозмездно передала их фонду.

Как правило, Apache Tomcat используется либо как обслуживающий локальные файлы самостоятельный веб-сервер, либо как сервер приложений на Apache HTTP Server. По данным W3techs, он применяется на 1% всех сайтов Интернета.

Распространяется приложение на условиях Apache License v. 2.

Node.js

Разработка Node.js началась в 2009 году Райаном Далем. В настоящее время проектом управляет Node.js Foundation при поддержке Linux Foundation. Согласно данным W3techs, рыночная доля решения составляет 0,2%.

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

Распространяется приложение на условиях оригинальной лицензии.

Lighttpd

Первый выпуск этого приложения датирован мартом 2003 года. Как и NGINX, веб-сервер Lighttpd способен поддерживать 10 тыс. соединений одновременно, что стало возможно благодаря их асинхронной обработке. По данным W3techs, этот сервер обслуживает 0,1% всех сайтов.

Отличительные особенности Lighttpd - небольшая нагрузка на процессор и высокая скорость оптимизации. Заложенные в его работу принципы позволяют сделать загруженность платформы независимой от числа текущих соединений.

Распространяется решение на условиях лицензии BSD.

Несколько месяцев назад, в одной из своих прошлых статей, я опубликовал интересные данные от компании comScore, которая ежемесячно подсчитывает . Если вы читали ту статью, то, наверное, помните, что Россия стала лидером в Европе по числу интернет-пользователей. Так вот, сегодня я хочу предоставить вам еще одни достаточно интересные данные, но уже от другой, не менее популярной компании – от компании Netcraft. Сегодня мы с вами узнаем, сколько существует сайтов в сети Интернет, и какие web-серверы являются самыми популярными в мире.

Если верить компании Netcraft, то по состоянию на январь 2012 года в сети Интернет насчитывалось аж 582,72 млн. сайтов – это 27,23 млн. или на 4,9% больше, чем было зафиксировано месяцем ранее, то есть в декабре 2010 года. Как видите, с каждым месяцем «всемирная паутина» лишь разрастается, благодаря чему информационное пространство нашей планеты становиться все больше и больше. И заметьте, что это еще не предел. Эксперты прогнозируют, что количество пользователей и количество сайтов в сети Интернет продолжит увеличиваться, причем этот рост будет существенным – по крайней мере, в ближайшие годы.

Также расчеты компании Netcraft показывают, что web-сервер Apache продолжает оставаться самым популярным в мире – в январе 2012 года его рыночная доля составляла аж 64,91%.

А так, вообще-то, тройка лидеров выглядит следующим образом:

  • Apache – 64,91% (в декабре 2010 года было 65,22%);
  • Microsoft – 14,46% (14,86%);
  • nginx – 9,63% (8,85%).

Получается, что на текущий момент лишь российский web-сервер nginx увеличивает свою рыночную долю, в то время как лидеры ее теряют, хоть и очень медленными темпами. При этом стоит отметить один важный момент – если при статистических расчетах брать во внимание лишь активные сайты сети Интернет, то по итогам января 2012 года web-сервер nginx незначительно, но все-таки опередил в рейтинге web-сервер Microsoft.

  • Apache – 57,93% (месяц назад 58,21%);
  • nginx – 12,18% (11,61%);
  • Microsoft – 12,14% (12,31%);
  • Google – 7,90% (8,13%).

В этом случае рыночная доля также растет лишь у web-сервера nginx, тогда как остальные потихоньку теряют свои позиции. А ведь еще год назад, в январе 2011 года, рыночная доля российского web-сервера находилась на отметке 8,23%, в результате чего он занимал только четвертую позицию рейтинга, уступая и Microsoft (16,76%) и даже Google (11,90%). Таким образом, мы видим серьезный рост популярности nginx, и как говорят его представители, этот рост носит необратимый характер – по крайней мере, к концу 2012 года они рассчитывают увеличить свою рыночную долю до 18%. Цель реальная, поэтому пожелаем им удачи.

А чтобы достичь поставленных целей, летом 2011 года была создана компания «Nginx Inc.», которая теперь будет осуществлять все работы над проектом «nginx». При этом осенью того же 2011 года данная компания получила очень приличные инвестиции (3,0 млн. долларов), поэтому не стоит удивляться, если web-сервер nginx по итогам 2012 года все же увеличит свою рыночную долю до ожидаемых 18%. Так что нам остается лишь ждать и следить за новостями.

Самые популярные веб-серверы в разных странах. Источник: W3Tech.com

Казалось бы, совсем недавно в 2012 году мы , что веб-сервер nginx обогнал Microsoft IIS и вышел на второе место в интернете среди активных сайтов (у nginx было 12,18%, у Microsoft - 12,14%). За прошедшие пять лет nginx сильно укрепил позиции. По статистике Netcraft за март 2017 года в той же категории его доля составляет 19,67%, а Microsoft IIS опустился до 8,95%. Лидер прежний - Apache с 45,82%.

Nginx был единственным веб-сервером, доля которого выросла во всех метриках Netcraft в марте 2017 года. Это был единственный веб-сервер, доля которого стабильно росла.



Статистика Netcraft по доле веб-серверов на активных сайтах, март 2017 года

Кроме Netcraft, есть и другая статистика по веб-серверам. Например, W3Tech.com вчера выдал очень красивые «круглые» цифры . По их оценке, nginx сейчас установлен на каждом третьем веб-сервере в мире.

Семь лет назад доля nginx составляла всего 3,9%, а сейчас уже 33,3%.


За тот же срок 2010-2017 гг доля Apache упала с 71,5% чуть ниже 50%, а доля Microsoft IIS упала с 20,6% до 11,3%.

По статистике переходов , чаще всего на nginx переходят с Apache. Обратный процесс тоже наблюдается.


Мировым лидером по внедрению nginx является Россия с показателем 76,8%. Это и понятно, ведь автор nginx - российский Игорь Сысоев. Он написал программу в 2004 году. Кроме России, абсолютное лидерство nginx имеет в Беларуси, Казахстане и Украине, в отдельных странах Азии, Африки и Южной Америки.

Почти во всём остальном мире лидирует Apache, за исключением Китая, Турции, Египта и нескольких арабских стран, где первое место сохраняет Microsoft IIS.

Почему доля nginx растёт, а Apache падает? Возможно, это связано с более простой установкой и настройкой, поддержкой более современных протоколов. Среди новых сайтов доля nginx 36,4%, а Apache - 47,7%.

76,8% сайтов с поддержкой HTTP/2 работают на nginx, и только 2,3% на Apache (модуль HTTP/2 для Apache до сих пор имеет статус «экспериментального»). Похожая ситуация среди сайтов с поддержкой IPv6 : 63,6% из них работает на nginx, втрое меньше - на Apache. Nginx является выбором № 1 среди сайтов, написанных на Ruby, Python и Scala, а также у тех, кто использует современные JavaScript-библиотеки вроде AngularJS, Vue,js и React. Создаётся впечатление, что всё самое современное работает на nginx.

Среди операционных систем чёткого тренда нет, но серверы на Red Hat/CentOS в подавляющем большинстве используют Apache, а системы на Gentoo предпочитают nginx.

Apache от ASF . Без преувеличения можно сказать, что это самый распространенный Web- сервер в мире. Сейчас имеются версии фактически для всех известных платформ и операционных систем, в том числе и для Windows NT. Поддержка Windows NT появилась лишь в последней версии, и это еще больше повысило популярность Apache в мире. Его несомненными достоинствами являются надежность, исключительная производительность и огромный набор функций и дополнительных модулей. Но все же «изюминкой» этого сервера является свободное бесплатное распространение. Это дает возможность, помимо экономии денег, быстро исправлять ошибки и вносить в код программы необходимые дополнения. Надо отдать должное тем, кто занимается созданием Web-сервера Apache, - эти люди безвозмездно и, главное, очень быстро справляются с замеченными ошибками. Кстати, отмечу, что таким человеком сможет стать любой, желающий внести свой вклад в развитие этого сервера. Версия 1.3.x считается одной из самых стабильных и быстрых среди всего семейства Apache. Основными свойствами Apache являются поддержка кросс-платформ, протокол HTTP/1.1, модульная структура, защита, запись log-файлов. Кроме стандартной поставки имеется большое количество модулей, которые расширяют возможности Apache. Свободное распространение и открытый код позволяют создавать наиболее защищенные модули. В этом с Apache трудно соревноваться любому коммерческому серверу. Но, несмотря на все эти достоинства, есть и серьезный пробел, который я бы все-таки не назвала недостатком: у Apache нет красивой программы установки и управления. Во время установки приходится иметь дело с командной строкой. Более того, при установке под UNIX иногда приходится даже вносить коррективы в include-файлы. Конечно, есть подробное описание того, что и как необходимо изменить, однако, на первый взгляд это кажется не очень удобным. При работе приходится иметь дело не с оконной программой, а с текстовыми конфигурационными файлами. Техническая поддержка проявляется не в виде красивых help-файлов или фирм, предоставляющих специалистов, а в основном через телеконференции и обмен мнениями системных администраторов. На самом деле фирмы, предоставляющие услуги технической поддержки, все же есть, но это стоит денег. Но такой нетипичный для серьезного продукта стиль не делает Apache менее популярным, и на рынке он является самым серьезным конкурентом для всех WWW-серверов.

iPlanet server (бывший Netscape Enterprise server) от Netscape и Sun. Не так давно произошло объединение Netscape и Sun в области создания Web- сервера, а именно: бывший Netscape Enterprise server теперь перешел в новое качество – iPlanet server. Это не просто смена имени. Теперь ко многим качествам предыдущего сервера добавилась тесная интеграция с Java- технологиями. Последней версией является 4.1. iPlanet Server, который поставляется на компакт-диске или может быть загружен по Сети. При этом он не является бесплатным. Есть версии как под Windows NT, так и под некоторые UNIX-системы. Привлекает простота установки, конфигурирования и управления. Базовая установка занимает не более 15 минут. Вся дальнейшая настройка производится с использованием Java-программы, запускаемой в браузере откуда угодно. Что касается Java, то, как и следовало ожидать, сервер поддерживает новейшие Java-технологии, такие как Java Servlets 2.1, Java Server Pages .92, JVM, JavaScript 1.4. На сегодняшний день это единственный сервер такого плана. В дополнение к этому iPlanet server включает в себя возможности по управлению доступом к базам данных. В его поставке содержатся драйверы для работы с Oracle, Informix, DB2, и Sybase. С точки зрения программирования для iPlanet server, сейчас наметилась тенденции к объединению с iPlanet Application Server. Это позволит существенно расширить возможности по созданию программ для Web-сервера iPlanet. Все перечисленные свойства делают Web-сервер iPlanet привлекательным для использования в разных областях. Также ведется работа над сервером FastTrack, который будет ограниченным по возможностям аналогом полного сервера, но при этом бесплатным (при полной аналогии с Netscape FastTrack). Что касается технической поддержки, то все описания, справочники и другие материалы относительно iPlanet server сделаны на высоком уровне (впрочем, как и любая документация, находящаяся на сервере Netscape).

Internet Information Server (IIS) от Microsoft. Сервер IIS является лучшим для Windows NT . Это и понятно, потому что вряд ли кто-нибудь, кроме разработчиков операционной системы, может сделать программу, полностью использующую возможности этой системы. Версия 4.0 поставлялась бесплатно вместе с Service Pack, а версия 5.0 поставляется исключительно как часть Windows 2000. Версия 5.0, по мнению специалистов, отличается более высокой надежностью, более тесной интеграцией с Windows и целым набором новых свойств. Установка и конфигурирование занимают не более 10 минут. Особенно приятно, что теперь ненужно устанавливать какие-либо Service Pack’ и не нужно перегружать систему после установки. При всем этом сам сервер занимает около 30 Мбайт на диске и вполне работает на машине Pentium 200 МГц с объемом памяти 128 Мбайт. Однако установить и запустить сервер можно только на Windows 2000 Server. Помимо удобной установки, удобно реализована и система управления сервером. Существует несколько полезных программ шаблонов (Wizards) для выполнения частых и рутинных операций. Вообще, справедливости ради нужно отметить следующее: в том, что касается удобства, мало кто сможет соревноваться с программами Microsoft. К тому же IIS поддерживает известные и включает в себя новые стандарты защиты. Так, есть поддержка известных методов SSL 3.0, Kerberos 5.0, и нового метода Fortezza (новый стандарт безопасности). Наиболее интересной и отличительной чертой IIS является поддержка WebDAV (Web-based Distributed Authoring and Versioning). Это недавно появившийся стандарт, который позволяет превращать внутренние сети в единое пространство, используя ресурсы соседних компьютеров как свои. Для пользователей IIS это означает, что они могут c большим удобством разделять свои рабочие файлы и иметь при этом возможность блокировать файлы. Вместе с тем существуют и некоторые проблемы, и несовместимость. Не совсем корректно происходит работа одновременно с Front Page Server, иногда при изменении конфигурации приходится перезапускать систему, встречаются ошибки при использовании системы удаленного администрирования. Но в целом версия 5.0 является значительным шагом вперед по сравнению с 4.0 в плане надежности и удобства.

Важным показателем, является производительность работы сервера. Под производительностью понимается скорость работы сервера в зависимости от количества подключенных клиентов и от интенсивности передачи запрашиваемых данных. Производительность зависит от многих факторов: типа и скорости процессора, объема оперативной памяти, операционной системы, присутствия других программ, настройки самого сервера. В случае с Apache есть и более экзотический момент. Обычно его берут в виде исходных текстов. Поэтому производительность откомпилированной программы зависит от типа и параметров компилятора и линкера. Определение производительности является весьма трудной задачей, поскольку не все зависит от Web-сервера. Чтобы сравнивать именно производительность Web-серверов, необходимо поставить их в одинаковые условия. На самом деле не совсем ясно, что значит поставить в равные условия, скажем, сервер IIS под Windows 2000 на Intel и сервер Apache под AIX 4.3 на RS6000. Это абсолютно разные по типу и структуре операционные системы и разные процессоры. Здесь наиболее тонким моментом, по моему мнению, является выделение того, что имеет отношение к Web- серверу, а что - ко всему остальному. Тем не менее подобные исследования проводятся. Результаты некоторых из них можно найти на том же сервере Webcompare. Кратко отметим, что по этим тестам производительность Apache несколько ниже по сравнению с двумя своими конкурентами, но, как мы уже говорили, не очень понятны методика проведения этих тестов и, главное, принцип обработки информации.

Кроме свойств, которые присущи непосредственно WWW-серверам, есть еще вопросы работы операционной системы и Web-сервера как единого целого. Это в первую очередь касается сервера IIS как лучшего для Windows 2000. И дело не в этом сервере, а в Windows, а также в том, что необходимость перезапускать всю систему возникает гораздо чаще, чем в других операционных системах. Это приводит к тому, что ваш Web-сервер может работать нестабильно. Иногда стабильность работы является более важным критерием, чем удобство управления, например в таких системах реального времени, как Интернет-радио.

Статьи по теме: