Евгений Сайты › Peppers Сбер ID
Сайты, SEO и GEO, реклама, чат-боты, ИИ и дизайн | Москва
Рейтинг
9 371
№ 111 в каталоге
Отзывы
Профессионализм
9/10
Коммуникация
9 /10
Город
Москва
Опыт работы
11 лет
На сайте с
2016 года
Юридический статус
Самозанятый
Freelance.Boutique
Премиум-сервис для лучших исполнителей

Настройка веб-сервера для оператора по обращению с отходами: Nginx на входе, Apache и LAMP на Linux, Internet Information Services для кабинета

Используемые навыки Apache Internet Information Services LAMP Linux Nginx

Описание

Серверы сайта и личного кабинета регионального оператора по обращению с отходами (Россия) настраивал Евгений Росляков. Сайт публичный, кабинет для юридических лиц, где они берут договоры и счета. Евгений занимается серверами и сайтами с 2016 года. Он самозанятый, заключает договор, а организациям выдаёт закрывающие документы. Живёт и принимает заказы в Москве, остальных ведёт удалённо.

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

Устройство было такое. Сайт работал на классическом LAMP: Linux, Apache, MySQL, PHP. Кабинет — приложение ASP.NET на Internet Information Services под Windows Server. Два сервера, две технологии, и настройки у обоих остались как после установки. Лимиты процессов, таймауты и кеш никто не трогал.

Серверами занимается один системный администратор. Linux и Windows он знает, но в дни выставления счетов было не до разбора: звонили клиенты, а он вручную перезапускал службы и ждал, пока всё оживёт.

Задача: пережить день выставления счетов без падений и развести кабинет и сайт так, чтобы тормоза одного не задевали другой. Приложения менять нельзя, поэтому всё решалось на уровне серверов.

Решение

Сначала искал, где ломается. Выгрузил логи за несколько дней выставления счетов и сложил с графиками загрузки. Apache запускал процессы по старой схеме и упирался в память, а кабинет страдал из-за пула приложений: он разрастался и не освобождал ресурсы.

Общим входом сделал Nginx на Linux. Он принимает запросы из интернета, хранит сертификаты, обслуживает соединения по второй версии протокола передачи страниц и сам отдаёт картинки, скрипты и стили. Страницы публичного сайта кеширует, поэтому до Apache доходит малая часть запросов. Для сайта и кабинета задал разные таймауты: кабинету, где собираются документы, нужно подождать дольше. Добавил ограничение частоты запросов и защиту от ботов, которые раньше перебирали страницы и грузили сайт.

Apache перевёл на mpm_event, PHP вынес в PHP-FPM, лимиты процессов подогнал под память сервера. Теперь нагрузка не раздувает его до отказа.

В Internet Information Services сделал отдельные пулы приложений и поставил ночную переработку по расписанию. Включил сжатие и фильтрацию запросов, настроил журналы так, чтобы по ним можно было разбираться.

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

Результат

Первый день выставления счетов после настройки прошёл без остановок. В самый пик кабинет отвечал медленнее обычного, но работал, а сайт нагрузки почти не почувствовал. Раньше такие дни заканчивались звонками и ручной рассылкой документов.

Сотрудники оператора перестали гадать, почему «что-то лежит». Мониторинг показывает, где растут ошибки или время ответа, и чаще всего это видно до жалоб. Регламент хранится у системного администратора. Он сам готовится к дням выставления счетов и подкручивает лимиты, не дожидаясь меня.

Есть и граница возможностей. Настройка серверов не лечит приложение. Если запрос в кабинете долгий из-за кода или базы, Nginx его не ускорит. Такие места я собрал в отдельный отчёт для разработчиков кабинета, пусть разбирают их своим порядком. Организаций будет становиться больше, и тогда придётся добавлять мощности и снова пересматривать лимиты. Это заложено в регламент как плановая проверка перед сезоном.

Следующим шагом клиент думает вынести кабинет на отдельный сервер с запасом и позже заняться самим приложением.

Если ваши сайт и кабинет живут на разных серверах и «ложатся» в одни и те же дни, пришлите мне сообщение на freelance.ru: на чём работает каждая часть и когда случаются провалы. Я подскажу, с чего начинать.

Оценили проект:

Другие проекты

Все проекты →
Веб-разработка и IT Создание сайта для завода кабельной продукции: B2B-каталог с остатками из SAP, NetSuite и Oracle Fusion, личный кабинет и заказы в ERP
Создание сайта для завода кабельной продукции: B2B-каталог с остатками из SAP, NetSuite и Oracle Fusion, личный кабинет и заказы в ERP
18
Маркетинг и Продвижение Продвижение в интернете бухгалтерской компании: блог, AI Content Editing, AEO и оптимизация поиска ChatGPT
Продвижение в интернете бухгалтерской компании: блог, AI Content Editing, AEO и оптимизация поиска ChatGPT
25
Дизайн и Брендинг Дизайн резюме для кадрового агентства: единый шаблон, инфографика и обложка гида для кандидатов
Дизайн резюме для кадрового агентства: единый шаблон, инфографика и обложка гида для кандидатов
14
Веб-разработка и IT Чат-боты для трейдера: Telegram-бот на Python и Telegram API рассылает сигналы из Pine Script, терминала MT4 и по криптовалюте
Чат-боты для трейдера: Telegram-бот на Python и Telegram API рассылает сигналы из Pine Script, терминала MT4 и по криптовалюте
12