Способы решения этой проблемы, поднятой еще в 2001 году программистом Дэном Кегелем, рассматриваются в девятой лекции курса «Сетевое программирование в UNIX», подготовленного специалистами SkyDNS и компании «Айдеко». За подробностями – добро пожаловать под кат.
Из рассмотренных до того подходов модель prefork работает, но является расточительной с точки зрения памяти, а select()– не работает вообще.
Автор курса Александр Патраков объясняет, какие функции можно вызывать вместо select(), чтобы переписанная с их использованием программа могла эффективно обрабатывать большое количество одновременных подключений.
Практическое задание состояло в переписывании астрологического сервера с использованием семейства функций epoll() и проверке, выдерживает ли он 10000 соединений.
А сколько одновременных соединений выдержит астрологический сервер на вашем ноутбуке?
Слайды доступны здесь.
Предыдущие лекции:
1. Курс для тех, кто не боится UNIX и C
2. Каждому клиенту по процессу
3. Реализуем протокол или как работают астрологи
4. О том, как читать до конца
5. Программы в автоматном стиле — трудности перевода
6. Как делать несколько дел одновременно и в то же время по очереди?
7. Эффективное чтение
8. Как сделать программу нетерпеливой?
Автор: AdMonster