
Известно, что работоспособность web-сайта зависит от множества факторов, но не в последнюю очередь от использования конкретного программного обеспечения веб-сервера. По данным Wikipedia, в мире существует более 60 различных программных продуктов, обслуживающих веб-запросы. Правильно называть такое ПО HTTP-сервер, но будем придерживаться более привычного web-сервер или веб-сервер. Какие-то из них узкоспециализированные, обслуживают только клиентов определенного направления и работает строго на платформе одного провайдера, другие же могут применяться для широкого спектра работ и доступны каждому. Но несмотря на обилие предложений, пятерка лидеров занимает почти 100% рынка веб-серверов. Причем за почти 30 лет существования массового Web на лицо консолидация и распределение рыночных долей, занимаемых лидирующими веб-серверами.
Еще 2-3 года тому назад безусловным лидером среди web-серверов был Apache. Свободный веб-сервер с многолетней историей (первая версия выпущена в свет в 1995). Надежный и устойчивый, проверенный поколениями системных администраторов. Но уже на конец 2022 года другой веб-сервер с именем Nginx занял лидирующую позицию (по данным W3Techs) сместив Apache с заслуженного первого места. А снизу их активно подпирают Cloudflare server и LiteSpeed. Microsoft, со своим IIS замыкает список популярнейших серверов.
Почему же «легенду» в виде Apache сместили с пьедестала? Apache разрабатывается уже более 25 лет. Его основы закладывались во времена, когда мало кто еще мог видеть в завтрашний день, а спроектировать систему, платформу, которая будет удовлетворять требованиям далекого будущего — затруднительно, если просто невозможно. Ведь компьютерные технологии развиваются стремительно, а рост Web-технологий вообще оказался взрывным на некоторых этапах своего существования. В последние годы Web из игрушки для самых продвинутых прочно вошел в жизнь людей и корпораций. А Apache оказался технологически неспособным к обслуживанию изменившихся и многократно возросших потребностей потребителей.
Основной проблемой Apache можно назвать неспособность выдерживать высокую нагрузку на сервер, справляться с изрядным количеством одновременных запросов, ну и для обеспечения высокой производительности ему необходимо самое высокопроизводительное железо. Ему требуется память и процессор, если хочется обслуживать более-менее живой, по современным меркам, сайт с посетителями. Но архитектура Apache не позволяет малой кровью справиться с возрастающей нагрузкой на веб-сервер. Именно по этой причине набрал популярность (и продолжает набирать) веб-сервер Nginx. В большинстве случаев Nginx используют в качестве промежуточного веб-сервера между конечным пользователем и Apache. Понятно, что такая схема не самая красивая, но по крайней мере она позволяет существенно увеличить пропускную способность сайта, в основе которого работает Apache. А перевести крупный веб-сайт, исторически работающий на Apache, на другую платформу — задача отнюдь нетривиальная. Ведь, веб-сервер крупного сайта — это не только статические html-файлы, а по большей части динамический контент, генерируемый интерактивно и настроенный на выполнение в рамках конкретной платформы.
Конечно, блог или персональный сайт, не предполагает излишней популярности и массовых набегов посетителей. Но ведь и оборудование, на котором размещается «сетевой дневник» из разряда супер-эконом. Ограниченная память, не самый мощный процессор, который еще и делится с другими арендаторами виртуального сервиса. Зато не бьет по карману и есть полигон, где присутствует нескончаемое поле для оптимизаций со стремлением выжать из оплаченного все что можно.
Мой собственный блог крутится на движке WordPress, самой популярной платформы для блогов (рейтинга, заслуживающего доверия, по блог-платформам я не обнаружил, но тем не менее), а это значит, что помимо HTTP-сервера мне требуется еще фреймворк для генерации динамического контента, это PHP, а еще и база данных для хранения статей и настроек, это MySQL (точнее её клон — MariaDB). Помимо всего этого хозяйства на сервере крутится еще множество другого программного обеспечения, связанного, так или иначе с обеспечением жизнедеятельности блога. После миграции с Blogger на WordPress помимо гибкости в настройках я получил еще и прирост скорости работы блога. Странички начали отдаваться без излишней задумчивости. И все это было проделано на Apache.
Но, постоянно хотелось большего. В первую очередь желание фокусировалось на ускорении выдачи материала. Настало время провести оптимизацию. Если до процесса глубокой настройки мой блог выдавал заглавную страничку за время порядка 3-х секунд, то после оптимизации, в первую очередь была подвергнута серьезной переработке база данных используемая WordPress и его плагинами (настроены индексы, созданы view и прочее), заглавная страница появлялась у потребителя уже за время порядка 0.35 секунды. Оптимизации была подвергнута не только база данных, но и все, что замедляло работу сервера. Дополнительно помогли переход на SSL (https), IPv6 и HTTP/2. Но проблема с производительностью никуда не ушла, она постоянно присутствовала в жизни моего блога. Единичный посетитель блога грузил его на 15-25 процентов процессорного времени, в зависимости от того, присутствует ли просматриваемая им страница в кэше или нет. А три-четыре одновременных читатели уже ощущали незримое присутствие друг друга.
Хотелось большего. И на тех же ресурсах. И еще хотелось HTTP/3. HTTP/2 с грехом пополам был внедрен, а вот с HTTP/3 у Apache уже не все так однозначно. Нужно искать и прикручивать модуль (если таковой вообще существует), ловить ошибки и проверять конфигурации. И тут мне на глаза попался список веб-серверов, которые из коробки обеспечивают пользователей всеми современными технологиями. Так и было принято решение попробовать перейти на OpenLiteSpeed (приставка Open означает принадлежность программного продукта к открытому программному обеспечению, которое распространяется на безвозмездной основе).