Сообщение 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:
Нормальная логика?
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:
Нормальная логика?
L>Для их быстрого обнаружения (ждать TCP keepalive в большинстве случаев слишком долго, не говоря уже о том, что он опциональный) нужно в протокол вносить heartbeat.
L>А это сразу уже другой уровень.
Получается, нужно крутиться в бесконечном цикле.
Когда read = 0:
+отлогировать утрату соединения/падение сервера
+выкинуть этот fd - epoll_ctl(DEL,...)
+close(fd)
+узнать какой ip за ним стоял
+создать новый сокет с новым fd
+epoll_ctl(ADD, fd)
+вызвать неблокирующий connect по такому ip
+в epoll_wait похоже придёт событие(EPOLLIN похоже), что соединение установлено
+отлогировать восстановление соединенияНормальная логика?