Добавить в корзинуПозвонить
Найти в Дзене
linkmeup

Немножко IT-прхеологии, а именно так называемая C10k problem и как один неудобный вопрос может изменить глобальную технологию

Итак, на дворе 1999 год, вебом правит Apache, и тут Dan Kegel задаётся вопросом: «А что будет, если к серверу подключится сразу 10000 клиентов?» 99 год на дворе, напоминаю. Тогда такие мысли приходили если только в порядке фантазий о далёком будущем. Собственно, проблема была в том, что апач использовал принцип один клиент — один тред. 8 МБ на одного, значит, итого надо 90ГБ на всех. Ну предположим, мы где-то столько набрали, но случается следующий тупик: на переключение между тредами мы будем тратить времени больше, чем на полезные вычисления. А реальные сервера падали далеко до заветных 10к. Решение было придумано только в 2002 в релизе Linux 2.6. Теперь один тред следил за всеми коннекциями, а ядро говорило, в каких сокетах есть данные и куда надо бежать. Если вам что-то это напоминает, то да, nginx был построен именно на этой идее, а веб-серверы научились молотить миллионы одновременных соединений. Всю историю можно найти здесь: https://kegel.com/c10k.html P.S. Что интересно, иве

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

Итак, на дворе 1999 год, вебом правит Apache, и тут Dan Kegel задаётся вопросом: «А что будет, если к серверу подключится сразу 10000 клиентов?» 99 год на дворе, напоминаю. Тогда такие мысли приходили если только в порядке фантазий о далёком будущем.

Собственно, проблема была в том, что апач использовал принцип один клиент — один тред. 8 МБ на одного, значит, итого надо 90ГБ на всех. Ну предположим, мы где-то столько набрали, но случается следующий тупик: на переключение между тредами мы будем тратить времени больше, чем на полезные вычисления. А реальные сервера падали далеко до заветных 10к.

Решение было придумано только в 2002 в релизе Linux 2.6. Теперь один тред следил за всеми коннекциями, а ядро говорило, в каких сокетах есть данные и куда надо бежать. Если вам что-то это напоминает, то да, nginx был построен именно на этой идее, а веб-серверы научились молотить миллионы одновременных соединений.

Всю историю можно найти здесь:

https://kegel.com/c10k.html

P.S. Что интересно, ивент-лупы были придуманы ещё дедами для мейнфреймов, только использовали их не для целей веба.