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