Есть клиент-сервер.
Клиент написан на Delphi, сервер на .NET.
Нужно сделать оптимальный keep-alive.
Нужен и для того, что бы клиент знал когда сервер упадет(если у сервера выдирают шнур сетевой, то соединение висит пока клиент что-нибудь не пошлет в сокет).
Вопрос — как оптимальнее?
Или слать от клиента каждые N минут серверу keep-alive?
Или слать если в течение K минут не пришли свежие данные?
Во втором случае минус в том, что они будут слать одновременно, что нагружает сервер.
Keep-alive не встроенные в tcp, а свои.
И насколько например при 5 тысячах клиентов будет грузиться сервер?
14.05.05 15:49: Перенесено из 'Алгоритмы'
Здравствуйте, aks, Вы писали:
aks>Вопрос — как оптимальнее?
aks>Или слать от клиента каждые N минут серверу keep-alive?
aks>Или слать если в течение K минут не пришли свежие данные?
Можно, в общем-то и так и так. Например, по стандарту взаимодействия SEMI HSMS реализован первый способ, дополненный проверкой таймаутов, где только можно. Неплохо работает.
aks>Во втором случае минус в том, что они будут слать одновременно, что нагружает сервер.
если ты про коллизии, то они возможны и так, и так. Никаких особых проблем, если грамотно написан обработчик коллизий.
aks>И насколько например при 5 тысячах клиентов будет грузиться сервер?
Хм..интересный вопрос

Зависит от сервера, траффика, временных усливий, архитектуры твоей, наконец. И уж потом только от keep-alive.
... << RSDN@Home 1.1.4 beta 5 rev. 395>>
Как вариант (на правах идеи) — сервер может сам возвращать клиенту, когда посылать следующий keep-alive (в ответе на текущий пакет). Тогда сервер сам сможет регулировать нагрузку от keep-alive пакетов.
... << RSDN@Home 1.1.4 beta 5 rev. 395>>
Здравствуйте, Left2, Вы писали:
L>Как вариант (на правах идеи) — сервер может сам возвращать клиенту, когда посылать следующий keep-alive (в ответе на текущий пакет). Тогда сервер сам сможет регулировать нагрузку от keep-alive пакетов.
))) Да, так и видится сервер падающий под наплывом NOP-сообщений от клиентов
Да, кстати, такая штука называется не keep-alive а пустой запрос NO OPeration (NOP) во многих клиент-серверных системах,
например X-протокол, почтовые протоколы SMTP, POP имеют такие сообщения.