Технология блокчейн Анализ крипторынка

Как обрабатывать 200 миллионов запросов в день с помощью CGI-bin на современном сервере

Технология блокчейн Анализ крипторынка
Serving 200M requests per day with a CGI-bin

Обзор возможностей использования CGI-bin для обработки сотен миллионов веб-запросов в сутки на современных вычислительных мощностях, а также примеры эффективного применения и оптимизации CGI-программ для высокой нагрузки.

В эпоху, когда современные веб-технологии развиваются с огромной скоростью, кажется, что классические методы создания динамических сайтов безнадёжно устарели. Однако не так давно CGI (Common Gateway Interface) был основным способом взаимодействия веб-сервера с программами, позволяя создавать интерактивные сайты. Несмотря на появление новых, более производительных технологий, CGI демонстрирует удивительную работоспособность даже в условиях экстремальной нагрузки на современном оборудовании. Исторически CGI-программы активно использовались в 1990-х и начале 2000-х годов для создания динамического контента. Обычно эти программы писались на Perl или даже на Си с целью повысить производительность.

Основной принцип работы заключался в следующем: когда сервер получал запрос с сайта, например, к сценарию guestbook.cgi, он создавал специальную среду с переменными окружения, содержащими информацию о запросе, и запускал отдельный процесс программы. Таким образом, каждый веб-запрос обрабатывался независимым экземпляром CGI-программы, которая использовала стандартный ввод и вывод для получения данных и отправки ответа. Важно отметить, что такой подход обладает определёнными преимуществами. Поскольку каждый CGI-процесс завершается по окончании обработки запроса, система автоматически освобождает использованную память и ресурсы.

Это позволяет избежать накопления ошибок и утечек памяти — частых проблем в длительно работающих сервисах. Кроме того, развернуть новое программное обеспечение на CGI-сервере можно было очень быстро, просто поместив обновлённые файлы в нужную директорию. С другой стороны, CGI-веб-серверы того времени, как правило, оснащались ограниченным числом процессоров и обладали всего несколькими гигабайтами памяти. Например, на классическом Apache-фреймворке с fork-моделью запускался отдельный процесс на каждое соединение, что быстро высаживало ресурсы и ограничивало число параллельных запросов. Это приводило к так называемому «обнимашечному» эффекту — когда на сайт обрушивался внезапный поток посетителей с популярного ресурса, сервер не справлялся с нагрузкой и падал.

Современное вычислительное оборудование кардинально изменило возможности работы CGI. Сегодня сервера с сотнями потоков процессоров и габаритной оперативной памятью – это уже стандарт. Даже виртуальные машины с 16-32 CPU доступны по разумной цене. Программа, построенная по принципу CGI, запускается в отдельном процессе, что позволяет эффективно использовать многопоточность и многопроцессорность современных CPU, масштабируя сервер по вертикали без существенной модернизации кода. Проведённые недавно тесты показали, что CGI-программа, работающая на 16-поточном процессоре AMD Ryzen 3700X, способна обрабатывать свыше 2400 запросов в секунду.

В пересчёте на сутки это более 200 миллионов HTTP-запросов, что является впечатляющим результатом как для такой простой архитектуры, так и для устаревшей технологии. В качестве примера была разработана гостевая книга на языке Go с базой данных SQLite. Выбор именно этих технологий дал баланс между простотой и производительностью. Гостевая книга позволяла пользователям оставлять комментарии и просматривать последние записи, при этом осуществляя записи и чтения из СУБД, что демонстрировало реальную нагрузку на серверную часть при полноценном взаимодействии с пользователем. Одна из ключевых особенностей использованного решения – включение современных оптимизаций работы с SQLite, таких как WAL-журнал и низкий уровень синхронизации, что значительно улучшает скорость записи в базу при высокой конкуренции.

Также была ограничена максимальная активная сессия к СУБД, чтобы избежать излишнего числа одновременных блокировок, что свойственно многопроцессным системам. Тестирование нагрузки методом проведения одновременных запросов (с помощью утилиты plow) подтвердила, что даже при использовании CGI, у которого изначально существует накладная на запуск процесса, можно выдерживать высокую RPS (requests per second). При этом задержки оставались низкими, большинство запросов обрабатывалось менее чем за 10 миллисекунд, что удовлетворяет требованиям многих продвинутых сервисов. Сравнение архитектуры с использованием классического Apache и с кастомным сервером на Go также показало интересные результаты. Оба варианта продемонстрировали высокую производительность, однако Go-сервер оказался чуть более эффективным в обработке запросов, что может быть связано с более лёгкой внутренней реализацией и меньшим накладным временем на системные вызовы.

В свою очередь, CGI-программы прекрасно сочетаются с современными контейнеризационными технологиями и CI/CD процессами. Образы Docker с готовыми CGI-приложениями позволяют быстро масштабировать систему в кластере и эффективно использовать ресурсы, при этом упрощая процесс деплоя и тестирования. Несмотря на все достоинства, CGI не рекомендуется для новых проектов с высокой нагрузкой, так как современные архитектуры и протоколы (например, FastCGI, WSGI или Node.js с асинхронным подходом) зачастую обеспечивают лучшую масштабируемость и удобство поддержки. Однако если уже есть существующее CGI-приложение, возможностей современного оборудования и грамотной настройки достаточно, чтобы поддерживать чрезвычайно высокий трафик без крупной переработки.

Автоматическая торговля на криптовалютных биржах Покупайте и продавайте криптовалюты по лучшим курсам Privatejetfinder.com (RU)

Далее
All-time classic conference talk: Wat
Вторник, 07 Октябрь 2025 Вечная классика конференций: Разбор легендарного доклада Wat от Гэри Бернхарда

Подробный разбор известного и провокационного доклада 'Wat' Гэри Бернхарда, который стал классикой среди ИТ-специалистов. Анализируются ключевые идеи, суть парадоксов в программировании и значение доклада для современного софта и разработчиков.

DIY Color E-Ink Calendar with a Raspberry Pi [video]
Вторник, 07 Октябрь 2025 Создание цветного электронного календаря на базе Raspberry Pi с использованием E-Ink дисплея

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

Bolt Drops Unlimited PTO
Вторник, 07 Октябрь 2025 Bolt Drops: Новая эра безлимитного оплачиваемого отпуска в современном бизнесе

Обзор изменений в политике отпуска компании Bolt Drops и их влияние на культуру труда, производительность и баланс работы и жизни в условиях современного рынка.

Pledge() in OpenBSD: A Deep Dive into Self-Imposed Sandboxes
Вторник, 07 Октябрь 2025 Pledge() в OpenBSD: Глубокий анализ механизмов самоограничения приложений для повышения безопасности

Подробный разбор функции pledge() в OpenBSD — уникального инструмента самоограничения приложений, обеспечивающего высокий уровень безопасности за счет минимизации доступа программ к системным ресурсам и отличающегося от аналогичных решений в Linux.

Neanderthals had a "fat factory" 125,000 years ago – much earlier than thought
Вторник, 07 Октябрь 2025 Неандертальцы и их «завод жира»: уникальное открытие 125 тысяч лет назад

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

How Many Agents Does it Take to Beat PyTorch? (surprisingly not that much)
Вторник, 07 Октябрь 2025 Сколько агентов нужно, чтобы превзойти PyTorch? Ответ вас удивит

Обзор инновационного подхода к оптимизации CUDA-кернелов с помощью мультиагентных систем, который позволяет значительно ускорить вычисления на GPU по сравнению со стандартными методами PyTorch. Подробный разбор архитектуры агентов, механизмов их взаимодействия и достигнутых результатов на современных NVIDIA H100 GPU.

The details of Jane Street's alleged 'sinister scheme' in India
Вторник, 07 Октябрь 2025 Разоблачение предполагаемой 'зловещей схемы' Jane Street в Индии: факты и аналитика

Подробный разбор обвинений в адрес Jane Street в связи с предполагаемой 'зловещей схемой' в Индии, влиянии этого на рынок и правовые аспекты дела.