Информация об изменениях

Сообщение Re[5]: 10K problem for keep-alive utility от 11.11.2023 17:08

Изменено 11.11.2023 19:45 avovana

Re[5]: 10K problem for keep-alive utility
Здравствуйте, landerhigh, Вы писали:

L>Для их быстрого обнаружения (ждать TCP keepalive в большинстве случаев слишком долго, не говоря уже о том, что он опциональный) нужно в протокол вносить heartbeat.

L>А это сразу уже другой уровень.

Получается, нужно крутиться в бесконечном цикле.
Когда read = 0:
+отлогировать утрату соединения/падение сервера
+выкинуть этот fd - epoll_ctl(DEL,...), 
+узнать какой ip за ним стоял
+создать новый сокет с новым fd
+epoll_ctl(ADD, fd)
+вызвать неблокирующий connect по такому ip
+в epoll_wait похоже придёт событие(EPOLLIN похоже), что соединение установлено
+отлогировать восстановление соединения

Нормальная логика?
Re[5]: 10K problem for keep-alive utility
Здравствуйте, landerhigh, Вы писали:

L>Для их быстрого обнаружения (ждать TCP keepalive в большинстве случаев слишком долго, не говоря уже о том, что он опциональный) нужно в протокол вносить heartbeat.

L>А это сразу уже другой уровень.

Получается, нужно крутиться в бесконечном цикле.
Когда read = 0:
+отлогировать утрату соединения/падение сервера
+выкинуть этот fd - epoll_ctl(DEL,...)
+close(fd)
+узнать какой ip за ним стоял
+создать новый сокет с новым fd
+epoll_ctl(ADD, fd)
+вызвать неблокирующий connect по такому ip
+в epoll_wait похоже придёт событие(EPOLLIN похоже), что соединение установлено
+отлогировать восстановление соединения

Нормальная логика?