Проблема с C10k
Проблема C10k — это проблема оптимизации сетевых сокетов для одновременной обработки большого количества клиентов. [1] Имя C10k — это числовое обозначение обработки одновременной десяти тысяч соединений. [2] Обработка множества одновременных соединений — это другая проблема, чем обработка большого количества запросов в секунду : последняя требует высокой пропускной способности (быстрая их обработка), тогда как первая не обязательно должна быть быстрой, но требует эффективного планирования соединений.
Проблема оптимизации сокет-сервера изучалась потому, что необходимо учитывать ряд факторов, чтобы веб-сервер мог поддерживать множество клиентов. Это может включать в себя сочетание ограничений операционной системы и ограничений программного обеспечения веб-сервера. В зависимости от объема предоставляемых услуг и возможностей операционной системы, а также соображений аппаратного обеспечения, таких как возможности многопроцессорной обработки, многопоточная модель или однопоточная может быть предпочтительна модель. Одновременно с этим аспектом, который включает в себя соображения относительно управления памятью (обычно связанной с операционной системой), подразумеваемые стратегии относятся к очень разнообразным аспектам управления вводом-выводом. [2]
История
[ редактировать ]Термин C10k был придуман в 1999 году инженером-программистом Дэном Кегелем. [3] [4] со ссылкой на Simtel FTP-хост cdrom.com , который в том же году обслуживал 10 000 клиентов одновременно через со скоростью 1 гигабит в секунду Ethernet . [1] С тех пор этот термин использовался для обозначения большого количества клиентов в целом, с аналогичными цифровыми названиями для большего количества подключений, последний раз «C10M» в 2010-х годах обозначал 10 миллионов одновременных подключений. [5]
К началу 2010-х годов стали возможными миллионы подключений на одном серийном стоечном сервере высотой 1U: более 2 миллионов подключений ( WhatsApp , 24 ядра, с использованием Erlang на FreeBSD ). [6] [7] и 10–12 миллионов подключений (MigratoryData, 12 ядер, использование Java в Linux ). [5] [8]
Обычные приложения с очень большим количеством подключений включают общедоступные серверы, которые должны обслуживать тысячи или даже миллионы пользователей одновременно, такие как файловые серверы , FTP-серверы , прокси-серверы , веб-серверы, балансировщики нагрузки . [9] [5]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Jump up to: а б «Проблема C10K» . Архивировано из оригинала 22 июля 2013 г.
- ^ Jump up to: а б Лю, Д.; Детерс, Р. (2009). «Обратная проблема C10K для серверных гибридных приложений». Сервис-ориентированные вычисления – семинары ICSOC 2008 . Конспекты лекций по информатике. Том. 5472. с. 166. дои : 10.1007/978-3-642-01247-1_16 . ISBN 978-3-642-01246-4 .
- ^ Андрей Алексеев (2012). «§14. nginx; §14.1. Почему важен высокий уровень параллелизма?» . В Эми Браун; Грег Уилсон (ред.). Архитектура приложений с открытым исходным кодом, том II: структура, масштаб и еще несколько бесстрашных хаков . Лулу.com . ISBN 9781105571817 .
Около десяти лет назад Дэниел Кегель, выдающийся инженер-программист,… манифест Кегеля C10K… решил проблему C10K с 10 000 одновременных подключений, nginx …
- ^ Кегель, Дэн (8 мая 1999 г.). «Проблема C10K» . Кегель ком . Архивировано из оригинала 8 мая 1999 года . Проверено 18 июня 2019 г.
И компьютеры тоже большие. Вы можете купить машину с частотой 500 МГц, 1 гигабайтом оперативной памяти и шестью Ethernet-картами со скоростью 100 Мбит/с примерно за 3000 долларов. Посмотрим: при 10 000 клиентов это 50 кГц, 100 Кбайт и 60 Кбит/сек на клиента. Не потребуется больше мощности, чтобы взять с диска четыре килобайта и отправить их в сеть раз в секунду для каждого из десяти тысяч клиентов. (Кстати, это составляет 0,30 доллара на клиента. Эти 100 долларов за клиента за лицензионные сборы, которые взимают некоторые операционные системы, начинают выглядеть немного тяжелыми!) Таким образом, аппаратное обеспечение больше не является узким местом.
- ^ Jump up to: а б с Михай Ротару (20 мая 2015 г.). «Как MigratoryData решила проблему C10M: 10 миллионов одновременных подключений на одном товарном сервере» . migratorydata.com . Проверено 15 октября 2021 г.
- ^ «1 миллион – это такой 2011 год» . в WhatsApp Блог . 6 января 2012 года. Архивировано из оригинала 1 мая 2014 года . Проверено 25 июля 2019 г.
На этот раз мы также хотели поделиться с вами некоторыми техническими подробностями об аппаратном обеспечении, ОС и программном обеспечении: hw.machine: amd64 hw.model: Intel(R) Xeon(R) CPU X5675 @ 3,07 ГГц hw.ncpu: 24 hw.physmem : 103062118400 hw.usermem: 100556451840
- ^ Рид, Рик (30 марта 2012 г.). «Масштабирование до миллионов одновременных подключений» (PDF) . Фабрика Эрланг . п. 7. Архивировано из оригинала (PDF) 9 июля 2012 года . Проверено 25 июля 2019 г.
- ^ Михай Ротару (10 октября 2013 г.). «Масштабирование до 12 миллионов одновременных подключений: как это сделала MigratoryData» . migratorydata.com . Проверено 15 октября 2021 г.
- ^ Поннусвами Садаяппан; Маниш Парашар; Рамамурти Бадринатх; Виктор К. Прасанна (2008). Высокопроизводительные вычисления — HiPC 2008 . Спрингер. ISBN 978-3-540-89893-1 . Проверено 15 октября 2021 г.