Конференция "Сети" » Высоконагруженный TCP сервер
 
  • Eraser © (03.06.10 16:13) [0]
    Интересует любая правильная информация по созданию высоконагруженных (в плане количества установленных одновременно соединений от 1000 до сотен тысяч в перспективе) TCP серверов, скорее всего с уклоном на I/O Completion Ports.
    Понимаю, что есть гугл, но хотелось бы получить правильную информацию о том, куда копать и что читать от людей, которые сталкивались с этой темой. Примеры, даже простенькие, тоже не будут лишними ;-)

    Спасибо.
  • Медвежонок Пятачок © (03.06.10 16:18) [1]
    сотни тысяч одновременных соединений?

    такое вроде не делается на тсп сервере.

    такое делается на тсп серверах. кластеры там всякие и карусели.
  • Anatoly Podgoretsky © (03.06.10 16:24) [2]
    > Eraser  (03.06.2010 16:13:00)  [0]

    Копай в сторону дата центров.
  • Eraser © (03.06.10 16:24) [3]
    > [1] Медвежонок Пятачок ©   (03.06.10 16:18)

    пока от тысячи до десятков тысяч.
  • Eraser © (03.06.10 16:25) [4]
    > [2] Anatoly Podgoretsky ©   (03.06.10 16:24)

    само собой, но меня больше софтовая часть сейчас интересует.
  • Anatoly Podgoretsky © (03.06.10 20:10) [5]
    Это очень сложно. Но если количество одновременных подключений не больше 32 000, то подобное можно сделать на ICS - есть подтверждение этому. Но это все равно очень сложно, программа должна быть очень, очень четко написано. Ошибки там уже не прощаются.
  • Eraser © (03.06.10 23:47) [6]
    > [5] Anatoly Podgoretsky ©   (03.06.10 20:10)

    сейчас активно изучаю вопрос, вроде бы, если речь идет о десятках тысяч соединений (тем более, что, в моем случае, работа будет вестись менее чем с 1% соединений, остальные будут просто поддерживать связь), то можно отбиться легкой артилерий в лице одного сервера. все таки рекомендуют I/O Completion Ports, а ICS, на сколько помню, просто на обычных асинхронных сокетах построен.
  • Eraser © (03.06.10 23:48) [7]
    > Но это все равно очень сложно, программа должна быть очень,
    > очень четко написано. Ошибки там уже не прощаются.

    безусловно, но главное - с самого начала выбрать правильный подход, потому и задал здесь вопрос.
  • Медвежонок Пятачок © (04.06.10 01:00) [8]
    ем более, что, в моем случае, работа будет вестись менее чем с 1% соединений, остальные будут просто поддерживать связь

    я в таком случае отказался бы от "голого" тсп и перешел бы к http.
    украл-выпил-в тюрьму.
    в смысле пришел - получил - отвалил.
  • Eraser © (04.06.10 01:40) [9]
    > [8] Медвежонок Пятачок ©   (04.06.10 01:00)


    > в смысле пришел - получил - отвалил.

    не подходит, в моем случае нужно все время ожидать получения.
  • Медвежонок Пятачок © (04.06.10 10:07) [10]
    все подходит.
    жди себе на здоровье.
  • Медвежонок Пятачок © (04.06.10 10:22) [11]
    не подходит, в моем случае нужно все время ожидать получения.

    Ежели имеется ввиду, что это клиент должен постоянно ждать управляющих команд сервера, то это другое дело.
    Это просто прикладной протокол так у тебя спроектирован.

    У меня тоже когда-то давно была похожая модель
    Но я от нее отказался (правда совсем по другой причине).
    Взял за основу http и убрал "многофазность" из старого прикладного протокола.

    Клиент что-то захотел - сформировал запрос. Выполнил post, назад получил результат и не отнимает ресурсы сервера до следующего раза
  • Eraser © (04.06.10 14:44) [12]
    > [11] Медвежонок Пятачок ©   (04.06.10 10:22)


    > Ежели имеется ввиду, что это клиент должен постоянно ждать
    > управляющих команд сервера, то это другое дело.

    да, именно так. других вариантов нет. реакция на команды сервера должна быть в районе 5 секунд. Так что постоянно стучаться на сервер просто не реально.

    > Клиент что-то захотел - сформировал запрос. Выполнил post,
    > назад получил результат и не отнимает ресурсы сервера до
    > следующего раза

    это не годится для моей ситуации. собственно сабж не об этом.
  • Медвежонок Пятачок © (04.06.10 14:55) [13]
    Так что постоянно стучаться на сервер просто не реально.

    стучаться не надо.
    сервер обслуживает клиентов.
    клиенты обращаются с нему с запросами.
    если запрос не назрел, стучаться на сервер не надо.
  • Медвежонок Пятачок © (04.06.10 14:57) [14]
    у тебя там поди еще и каждая клиентская сессия порождает коннект к какой-нибудь базе данных и висит пока клиент держит коннект с тсп сервером.

    здесь никаких ресурсов не хватит при таком количестве соединений.
  • Eraser © (04.06.10 15:25) [15]
    > [13] Медвежонок Пятачок ©   (04.06.10 14:55)


    > клиенты обращаются с нему с запросами.

    специфика не много другая. нужен постоянно работающий канал, к сожалению, по другому никак. другой велосипед не изобретешь, у всех конкурентов так.

    > у тебя там поди еще и каждая клиентская сессия порождает
    > коннект к какой-нибудь базе данных и висит пока клиент держит
    > коннект с тсп сервером.

    нет, БД вообще не при чем )
  • Медвежонок Пятачок © (04.06.10 15:31) [16]
    специфика не много другая. нужен постоянно работающий канал, к сожалению, по другому никак. другой велосипед не изобретешь, у всех конкурентов так.


    никак это только потому что протокол такой. и больше не почему.
    у моих конкурентов тоже проекта аналогичные моему работают как у тебя и как они работали ранее у меня.

    я изменил протокол и теперь мне не нужен постоянный канал.
  • Eraser © (04.06.10 18:38) [17]
    товарищ, см. сабж.
  • Медвежонок Пятачок © (04.06.10 19:08) [18]
    да ради бога.
    пиши наздоровье свой сервер на сотни тысяч коннектов. пенсия еще поди далеко
  • DVM © (05.06.10 13:27) [19]

    > Медвежонок Пятачок ©   (04.06.10 01:00) [8]

    Установление соединения требует в разы больше ресурсов, чем поддержание. Не фат что будет более эффективно.
 
Конференция "Сети" » Высоконагруженный TCP сервер
Есть новые Нет новых   [134436   +25][b:0][p:0.001]