В очередной раз столкнувшись с зависанием табов Firefox, когда перестаёт работать клавиатура, я узнал от Гугло-ИИ про «молчаливое бесконечное зависание сокетов» и сообщения KeepAlive. Поискал информацию в других местах, и вопросов стало ещё больше:
-
Правильно ли я понимаю, что
1.1. при плохой связи или намеренном удушении трафика до моей машины не доходят сообщения об обрыве связи,
1.2. поэтому программа может вечно висеть и считать себя работающей, ничего не скачивая/не передавая,
1.3. поэтому придумали отправку сигнала KeepAlive,
1.4. и при плохой связи имеет смысл увеличить частоту запросов и уменьшить время до нескольких минут? -
Если по умолчанию tcp_keepalive_time — 2 часа, а затем 9 (tcp_keepalive_probes) попыток с интервалом 75 с (tcp_keepalive_intvl), почему curl, браузеры, FTP-сервера и другие программы могут висеть, ничего не скачивая, гораздо дольше 2 часов 12 минут? Считать ли способность не работать и не выдавать ошибку дольше 2 часов 12 минут багом сетевой программы?
-
Где об этом стоит прочитать? Помимо man sysctl, man sysctl.conf и man.tcp.
-
Можно ли глобально прибить все подвисшие соединения на уровне ядра?
-
Пытался ли кто-нибудь решить проблему мёртвого зависания при плохой связи глобально? Можно ли, например, при таймауте на уровне TCP долго пытаться восстановить связь, а не рвать окончательно?
-
Можно ли настраивать параметры keepalive для браузеров в Андроиде без рута?