Я пытаюсь разработать архитектуру для обработки массивных соединений TCP-сокетов, и я сомневаюсь в ограничениях этой архитектуры.
Мне придется справиться ~ 20k одновременно TCP-соединения, а это соединения с длительным опросом, они останутся подключенными в течение длительные периоды времени и будет отправлять данные каждую минуту.
Об использовании потоков не может быть и речи, поскольку 20 тысяч потоков будут истощать системные ресурсы. Я планирую использовать Gevent справиться с таким количеством одновременный соединения или даже использовать haproxy и 2 сервера (с gevent), например, для обработки 10 тыс. соединений каждый. В этом есть смысл? Есть ли у кого-нибудь совет или опыт использования Gevent с 10К + подключениями? Есть ли у кого-нибудь представление о требованиях к оборудованию для обработки этих подключений? Я видел некоторые тесты который показывает множество тайм-аутов подключения для gevent при одновременных подключениях 5k, что не очень многообещающе для моей проблемы.
Заметка: Я уже читал о проблеме C10k и советах по «Приложению Comet для миллиона пользователей».
Используйте оба сразу в комбинации. Назначьте процессу порядка 1000 подключений. Использовать управляющий делами для распределения соединений и создания новых процессов, если вы достигнете точки, в которой каждый текущий процесс обработки будет насыщен.
Что ж, поскольку вы можете использовать 2 сервера для обработки 10 КБ каждый, почему бы не использовать 5 серверов и не обрабатывать 4 КБ на каждом?