C10k
C10k (англ. C10k; 10k connections — проблема 10 тысяч соединений) — условное название задачи конфигурирования и обслуживания высокопроизводительного сервера, способного обслуживать порядка 10 тыс. соединений одновременно.
Возникло в 1999 году в рамках задачи обслуживания популярного в то время публичного FTP-сервера Simtel, его администратор Дэн Кегель[1] обратил внимание, что обслуживающий узел на гигабитном канале по аппаратным показателям должен был бы справляться с нагрузкой в 10 тыс. соединений, но программное обеспечение этого не позволяло.
Ряд известных веб-серверов особо подчёркивали решение задачи C10k, среди таковых Nginx, Lighttpd, Cherokee HTTP Server, Tornado, Node.js, Yaws. Для обхода проблемы используются различные техники: пулирование потоков выполнения (вместо выделения на каждое соединение отдельного потока), применение легковесных процессов, поддержка функций соединений средствами исключительно пользовательского пространства (с минимизацией системных вызовов для обхода ограничений ядра операционной системы). Кроме того, обслуживание одновременно множества соединений является отличной от задачи обслуживания множества запросов в секунду: первое не требует быстрой обработки запросов, но в то же время требует эффективного управления ресурсами.
К началу 2010-х годов благодаря прогрессу в аппаратном обеспечении и в техниках серверного программирования стала возможна поддержка одновременно более миллиона соединений на одном серверном вычислительном узле массового класса (24 ядра ЦПУ, операционная система FreeBSD, сервис WhatsApp на Erlang)[2] и чуть позже была преодолена отметка в 12 млн соединений (MigratoryData, 24 ядра ЦПУ, Linux, Java)[3], в связи с чем появились требования к программному обеспечению обеспечивать уровень производительности по количеству одновременных подключений, обозначаемые нумеронимом C10M — порядка 10 млн соединений.
Примечания
- ↑ Кегель, 2014.
- ↑ 1 million is so 2011 (англ.). WhatsApp.com. Дата обращения: 22 октября 2025. Архивировано 26 июня 2025 года.
- ↑ Scaling to 12 Million Concurrent Connections: How MigratoryData Did It - MigratoryData. migratorydata.com. Дата обращения: 22 октября 2025.
Ссылки
- C10k problem. Dan Kegel (5 февраля 2014).
- D. Liu, R. Deters. The Reverse C10K Problem for Server-Side Mashups // Service-Oriented Computing — ICSOC 2008 Workshops. — 2009. — Т. 5472 (Lecture Notes in Computer Science). — С. 166. — ISBN 978-3-642-01246-4. — doi:10.1007/978-3-642-01247-1_16.