Переход с Apache на OpenLiteSpeed. Проверено на себе.

мужик с бородой лежит поверх древнего компьютера, наверное он переел гуакамоле

Известно, что работоспособность 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 означает принадлежность программного продукта к открытому программному обеспечению, которое распространяется на безвозмездной основе).

Читать далее ...



Syncthing: улучшение локального обнаружения и ускорение синхронизации

компьютер, ноут, телефон, облако, замок, стрелки туда-сюдаЯ довольно долго пользовался для синхронизации файлов между своими серверами, компьютерами и мобильными устройствами такой программой, как Resilio Sync (в девичестве BTSync). Но от Resilio пришлось отказаться, поскольку на протяжении нескольких лет разработчики так и не смогли избавиться от проблемы, связанной с зависанием приложения для Android. Ошибка была признанной, обнаруживалась у многих пользователей, но не исправлялась. Вероятно, что у Resilio просто закончились программисты для Android. Пришлось перейти на Syncthing.

Syncthing – open-source аналог Resilio, а именно децентрализованная система синхронизации файлов между устройствами. Принципы ее работы схожи с Resilio, но благодаря обширному комьюнити – система работает стабильно, мобильное приложение не останавливается, синхронизация происходит без сбоев. Как и у большинства open-source проектов, связанных с программным обеспечением, у Syncthing самую малость хромает документация. Разработчики справедливо полагают, что пользователь, решивший погрузиться в мир open-source, вполне сам способен просмотреть исходный код и найти нужный ему параметр настройки, а заодно и понять, что он означает, в каких случаях применяется, а в каких нет.

Syncthing может проводить синхронизацию между устройствами как напрямую, если оба устройства находятся в одной сети или же хотя бы одно из них имеет «белый» IP-адрес, так и через сервер посредник, расположенный где-то в глобальной сети. Поиск устройства для синхронизации осуществляется через сервер посредник обнаружения, расположенный тоже где-то в глобальной сети. Сообщество Syncthing предоставляет несколько десятков или даже сотен серверов посредников обоих типов, разбросанных по всему миру.

Читать далее ...



Как перенести Ubuntu с VPS на Hyper-V (или другую платформу виртуализации)

уставший разработчик оттягивается за монитором, монитор, часы, чел, американецПоявилась у меня потребность чуточку «поиграться» с настройками сервера, который крутится у провайдера на VPS сервере. Изменять параметры на «боевом» сервере можно, если они не глобальные и отменить их можно очень быстро. Но вот если требуется произвести более значимые изменения, то лучше попробовать их сначала в тестовом окружении, проверить, все ли будет работать, разработать план отката изменений, если вдруг что-то пойдет не так. И только потом прибегать к изменениям на «боевом» сервере.

Самым четким способом, на мой взгляд, по организации тестового сервера, есть снятие полной копии боевого сервера и разворачивание этой копии на тестовой архитектуре. Так как мой боевой сервер крутится на VPS, то имеет смысл снять его полную копию и развернуть ее уже на тестовой системе виртуализации. К сожалению, из интерфейса панели управления VPS моего провайдера снять образ системы нельзя. Сам сервер VPS крутится на Ubuntu под системой виртуализации XEN, а в тестовой среде гипервизором у меня будет выступать уже Microsoft Hyper-V. Осталось только понять как снять образ диска и подключить его к новой виртуальной машине.

Читать далее ...



Хочу IPv6! Но что делать, если твой провайдер козлина? Прокидываем IPv6 в свою сеть через VPS и WireGuard.

ночь, здание, луч света

Скромный лучик света в темном царстве невежества

Проблема с нехваткой публичных IPv4 адресов возникла не вчера и даже не позавчера. Когда только на горизонте забрезжил лучик проблем, что IPv4 адресов на всех желающих не хватит, был разработан стандарт IPv6, в котором этих адресов настолько много, что хватит их очень на долго. Но… Переход на новый протокол длится уже более 20 лет, но до сих пор полный переход во всех сферах и направлениях так и не произошел. И похоже, что мы еще довольно долго будем валандаться с ограниченным по количеству публичных адресов наследием прошлого очень долго.

Для чего же нужен IPv6? Для меня лично он работает просто быстрее, чем IPv4. А еще на свое любое устройство с поддержкой IPv6 я могу подключиться откуда угодно. Да и вообще, надо идти в ногу со временем. Сколько же уже можно? Но, к сожалению, несколько из моих провайдеров, не будем показывать пальцами, хотя это Мегафон, MosLine и Билайн, совершенно не спешат переходить на современный протокол. Провайдеров отчасти тормозят такие вещи, как чрезмерно устаревшее оборудование, отсутствие квалифицированного персонала и недостаток желания что-то делать, ведь народ и так потребляется. И у меня есть сильное подозрение, что последний пункт он и есть ключевой в этой проблеме.

640 килобайт хватит всем.
Уильям Гейтс

Но если у меня возникло желание заполучить IPv6, то я его заполучу. И в этом нам поможет… Нет, не киножурнал «Хочу все знать!», хотя он точно не помешал бы. Разбираться в том, каким образом можно получить себе IPv6, если провайдер дает только IPv4 и то не с публичным («белым»), а с «серым» адресом, будем по официальным мануалам, постам в сетях и всём таком прочем.

Итак. Протокол IPv6 достаточно гибкий и одновременно сложный в понимании. Чем дальше заходит технология, тем больше времени нужно ей посвятить, чтобы понять каким образом реализовать тот или иной финтель. Если сравнивать IPv6 с IPv4, то последний раза в два проще, как минимум. Поэтому будем решать задачу пошагово, стараясь пройти от простого к сложному, получая в каждый момент времени удобоваримый результат.

Читать далее ...



Jetpack Related Posts: настраиваем отображение связанных записей под себя

Не секрет, что мой блог крутится на платформе WordPress. Платформа WordPress штука очень мощная и на текущий момент, по праву, является номером первым среди всего многообразия выбора средств для ведения блогов. Популярность WordPress кроется, во-первых, в его бесплатности, а во-вторых, в 100% кастомизации. Например, для блога я использую сильно модифицированную типовую тему. В ней поменяно так много всего, чтобы результат выглядел и работал именно так как мне нужно, что ее впору рассматривать как самостоятельный продукт для платформы WordPress. Но помимо ковыряния в исходных кодах, расширять и настраивать функции, а заодно и внешний вид блога в WordPress можно посредством дополнительно устанавливаемых плагинов, благо на платформе работает неплохой маркетплейс, где можно выбрать наиболее подходящий вариант плагина для выполнения именно той функции, которая вам нужна. Именно так и поступает большинство пользователей платформы. Ведь для установки плагина не требуется иметь знания о языках программирования, а настройка обычно происходит через понятные и доступные меню.

wordpress query monitor

QueryMonitor здорового человека. 128 запросов к базе данных за 0.05 секунды и выдача всего материала за 1/3 секунды

Но недавно, проводя регулярную инспекцию, я внезапно обнаружил, что QueryMonitor (очень полезный плагин, позволяющий оптимизировать работу платформы) выдает мне желтенький сигнал, означающий, что с моим блогом есть какая-то, не серьезная, но требующая внимания проблема. Источником проблемы оказался SQL-запрос плагина Zemanta Related Posts. Запрос от плагина длился 0.08 секунды и существенно замедлял работу всей платформы. Замедление началось, как только ядро WordPress обновилось до очередной версии. Казалось бы, запрос занял всего 8 сотых секунды, разве это можно заметить? Но платформа WordPress очень активно работает с базой данных (мне пришлось потратить немало времени на ее оптимизацию), так для отображения этой статьи к базе данных осуществляется более 120 запросов. Длительный запрос к базе данных не только загружает сервер, но и замедляет все остальное. Пока запрос не будет отработан, страничка до конца не прогрузится. Я начал разбираться, почему плагин работает так не оптимально и оказалось, что сам плагин удален с маркетплейса WordPress, так как авторы перестали его поддерживать.

Читать далее ...



Соединяю локальные сети через VPS-сервер и Keenetic посредством WireGuard VPN

рассвет, москва, деревья, мгу, мосфильмовскаяСегодня случилось страшное. Мой провайдер MosLine, без каких-либо объявлений или предупреждений сменил мне публичный IPv4 адрес на частный. В результате отключились две важные для меня функции: связь нескольких разрозненных локальных сетей и туннелирование IPv6 (использовался 6in4 вариант туннелирования, когда требуется наличие «белого» IPv4 адреса), поскольку MosLine (вкупе с его дочерней Optic-Inet) так и не научился раздавать своим клиентам IPv6. Собственно, отключение вбило очередной гвоздик в гробик провайдера, так как я уже сейчас могу получить минимум вдвое более быстрый канал через мобильную сеть и вдвое дешевле (см. статью о современных средствах добычи мобильного интернета). И единственные две вещи, которые меня останавливают от перехода на более дешевого альтернативного провайдера, так это необходимость перекраивания внутренней локальной инфраструктуры, а также необходимость инвестирования в новое оборудование. Ну и ping на мобильной сети не такой комфортный, как на оптике. И пока я раздумываю над сменой провайдера, необходимо закрыть хотя бы первую функцию, а именно связать разрозненные локальные сети в единое информационное пространство. Благо, у меня есть несколько VPS-серверов, которые можно оперативно использовать для решения этой проблемы.

Итак, в качестве инфраструктуры у меня используются роутеры, или как говорят англоязычные специалисты «рутеры», Keenetic. Может быть, данные роутеры не самые продвинутые в плане настроек, но они не кушают мозг в процессе эксплуатации (один раз настроил и работает годами), а при самой настройке нет необходимости бегать кругами вокруг роутера, курить трубку и бить в бубен исполняя тотемный танец по призыву коллективного разума с вопросом «а почему не работает». На стороне VPS, как водится, у меня крутится разновидность Linux.

Читать далее ...



Ускоряем HDD или использование Windows Storage Spaces для создания tiered drives (иерархичных дисков)

ssd, hddSSD-диски все еще дороги. Цена на них постепенно понижается, но на единицу хранения они пока еще не могут конкурировать с традиционными HDD. Последние, кстати, вовсе не собираются сдавать свои позиции. И дело не только во все увеличивающихся объемах хранения и снижающейся стоимостью записи на HDD. Традиционные HDD обеспечивают куда большую надежность хранения данных на протяжении длительного времени и существенно большую износостойкость в плане записи. И эти свойства HDD появились не вчера, их планомерно развивали в течение десятилетий. К надежности хранения данных на HDD можно привести множество примеров, когда в различных НИИ и замшелых банках все еще используются жесткие диски выпущенные десятки лет тому назад. И при этом они полностью сохранили свою работоспособность. Кстати, ленточные накопители тоже остались у дел, в тех же банках, финансовых компаниях, замшелых НИИ. Магнитные ленты отлично выполняют функции по архивному хранению информации, например, резервных копий и по самой минимальной стоимости при высочайшей надежности.

Но есть у HDD и неоспоримые недостатки. Это все, что связано со временем доступа и вообще скоростью чтения и записи данных. Конечно, HDD почти что космические ракеты, если сравнить их с решениями на магнитной ленте, но скорости HDD, в нынешних реалиях, все равно недостаточно. По сути, это самый медленный компонент современного ПК. Именно по этой причине на свет появились SSD. Они лишены механической части и соответственно недостатков, связанных со временем доступа и скоростями чтения/записи. В SSD все эти операции происходят «мгновенно» и с максимально доступной производительностью.

А можно ли совместить достоинства HDD и SSD дабы нивелировать их недостатки? Как оказывается можно. Еще до появления SSD обычные HDD уже оснащались крупными буферами из оперативной памяти для ускорения операций чтения-записи. Данная технология помогала лишь отчасти, в основном для операций связанных с записью данных, либо на очень медленных компьютерах, где интерфейс не мог переварить поставляемый жестким диском объем данных. Чуть позже появились комбинации, когда HDD дооснащался еще и небольшим встроенным SSD. SSD-часть в этом случае использовалась как SSD-кэш. Большой популярности подобные решения не нашли, так как объемы SSD встраивались небольшие, а износу они подвергались существенному. Но производители пошли дальше.

Читать далее ...