Есть ли любой современный обзор решений 10 000 проблем клиента/секунда

(Обычно названный проблемой C10K)

Есть ли более современный обзор решений c10k проблемы (Последнее обновление: 2 сентября 2006), конкретно сфокусированный на Linux (epoll, signalfd, eventfd, timerfd..) и библиотеки как libev или libevent?

Что-то, что обсуждает все решенные и все еще нерешенные вопросы на современном сервере Linux?

35
задан jweyrich 7 August 2010 в 20:24
поделиться

6 ответов

Так совпало, что всего несколько дней назад Programming Reddit или, может быть, Hacker News упомянули эту статью:

Тысячи потоков и блокировка IO

В первые дни Java мои друзья по программированию на C смеялись надо мной за то, что я делал socket IO с блокировкой потоков; в то время альтернативы не было. В наши дни, с обильной памятью и процессорами, это кажется жизнеспособной стратегией.

Статья датирована 2008 годом, поэтому она тянет ваш горизонт вверх на пару лет.

10
ответ дан 27 November 2019 в 15:45
поделиться

libev выполняет несколько тестов против себя и libevent ...

1
ответ дан 27 November 2019 в 15:45
поделиться

Я бы порекомендовал прочитать опрос Зеда Шоу , epoll, science и superpoll [1]. Почему epoll - не всегда ответ, и почему иногда даже лучше пойти с опросом, и как объединить лучшее из обоих миров.

[1] http://sheddingbikes.com/posts/1280829388.html

1
ответ дан 27 November 2019 в 15:45
поделиться

Взгляните на проект RamCloud в Стэнфорде: https://ramcloud.atlassian.net/wiki/display/RAM/RAMCloud

Их цель - 1 000 000 операций RPC в секунду на сервер. У них есть многочисленные тесты и комментарии к узким местам в системе, которые могут помешать им достичь своих целей по пропускной способности.

1
ответ дан 27 November 2019 в 15:45
поделиться

Чтобы ответить на вопрос OP, вы могли бы сказать, что сегодня эквивалентный документ не об оптимизации единый сервер для нагрузки, но оптимизирующий под нагрузку весь ваш онлайн-сервис. С этой точки зрения количество комбинаций настолько велико, что то, что вы ищете, не является документом, это живой веб-сайт, на котором собраны такие архитектуры и фреймворки. Такой веб-сайт существует и называется www.highscalability.com

Боковое примечание 1:

Я бы возражал против убеждения, что добавление большего количества оборудования к нему - долгосрочное решение:

  • Возможно, стоимость инженера, который «получает» производительность, высока по сравнению со стоимостью одного сервера. Что происходит при горизонтальном масштабировании? Допустим, у вас 100 серверов. Увеличение емкости серверов на 10 процентов может сэкономить вам 10 серверов в месяц.

  • Даже если у вас всего две машины, вам все равно придется справляться с резкими скачками производительности. Разница между сервисом, который постепенно деградирует под нагрузкой, и сервисом, который выходит из строя, заключается в том, что кто-то потратил время на оптимизацию для сценария загрузки.

Примечание 2:

Тема этого сообщения вводит в заблуждение. Документ CK10 не пытается решить проблему 10k клиентов в секунду. (Число клиентов в секунду не имеет значения, если вы также не определите рабочую нагрузку вместе с устойчивой пропускной способностью при ограниченной задержке. Думаю, Дэн Кегель знал об этом, когда писал этот документ.). Вместо этого смотрите на него как на сборник подходов к созданию параллельных серверов и микротестов для них. Возможно, с тех пор и сейчас изменилось то, что в какой-то момент можно было предположить, что услуга предназначена для веб-сайта, обслуживающего статические страницы. Сегодня сервис может быть хранилищем данных noSQL, кешем, прокси-сервером или одним из сотен программных компонентов сетевой инфраструктуры.

5
ответ дан 27 November 2019 в 15:45
поделиться

Проблема C10K обычно предполагает, что вы пытаетесь оптимизировать отдельный сервер, но, как указывается в вашей статье, «оборудование больше не является узким местом». Следовательно, первый шаг, который необходимо сделать, - убедиться, что просто добавить в микс больше оборудования не проще и дешевле.

Если у нас есть коробка за 500 долларов, обслуживающая X клиентов в секунду, гораздо эффективнее просто купить еще одну коробку за 500 долларов, чтобы удвоить нашу пропускную способность, вместо того, чтобы позволить сотруднику сожрать, который знает, сколько часов и долларов пытается вычислить как выжать больше из оригинальной коробки. Конечно, при условии, что наше приложение совместимо с несколькими серверами, что мы умеем балансировать нагрузку и т. Д. И т. Д.

11
ответ дан 27 November 2019 в 15:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: