Вопрос по keep-alive

yaskov2006

Допустим есть клиент-сервер.
Клиентам в одинаковое время от сервера приходят данные.
Вопрос следующий:
как правильно сделать keep-alive?
Если сделать посылку клиентом keep-alive каждые n минут, то это возможно неоптимально.
Есть еще один вариант - слать keep-alive если в течение k минут не пришли новые данные.
Минус этого варианта - клиенты будут слать keep-alive одновременно.
И насколько keep-alive расходует память сервера? Например, при количестве 5 тысяч подключенных клиентов, при реализации сервера на .NET?

Dasar

Зачем тебе нужны keep alive?

bleyman

5 минут + рандом до 1 минуты.

ppplva

Попробую угадать. HTTP ? Клиенты пытаются догадаться, когда на сервере доступны для них новые данные ?
Минимизировать задержку (при ограничении на частоту keep-alive) - интересная задача, но нельзя ли изменить протокол для получения явных апдейтов от сервера ?
Короче, я чего-то не понимаю

FRider

Если соединение разорвалось "плохо"(кабель выдернули, например то тсп соединение не разорвется пока по нему не зохотят что-нить послать, => расходуются ресурсы сервера впустую.

TYU_2008

боюсь, автор не tcp'шный keepalive имеет ввиду

yaskov2006

Keep-alive нужны что бы и клиентская сторона понимала, что сервер недоступен.
Имеются ввиду свои keep-alive, не те что в tcp встроены.

Marinavo_0507

Чтобы не происходило самосинхронизации клиентов, обычный трюк - добавлять случайную составляющую к таймауту.
То есть слать не раз в минуту например, а с промежутками в 55..65 секунд, каждый раз выбирая случайное число из этого интервала.
Оставить комментарий
Имя или ник:
Комментарий: