Commit Graph
31 Commits
Author SHA1 Message Date
monster 65c8452f3c Merge pull request #1 from monster1025/fix/tunnel-self-reconnect-on-load
Не рвать туннель из-за молчания heartbeat под нагрузкой
2026-09-17 15:16:07 +03:00
monster1025andClaude Opus 5 b26271a4f9 Не рвать туннель из-за молчания heartbeat под нагрузкой
Heartbeat (exec-канал `while :; do echo; sleep 1; done`) мультиплексирован в
том же SSH-соединении, что и полезный трафик проброса. На большой выгрузке
строка heartbeat опаздывает за данными, MonitorLoop считает туннель мёртвым и
зовёт Reconnect(), который Stop()/Dispose()-ит ForwardedPortRemote — обрывая ту
самую передачу, которая и вызвала задержку.

По логам sshd: 1670 переподключений за месяц, все с формулировкой
"Connection terminated by the client"; распределение интервалов двумодальное —
82% короче 30 с (шторм) против 16% длиннее 10 минут (покой), а в час активной
передачи данных разрывов в 4-8 раз больше фонового уровня.

Что сделано:

1. Порог молчания вынесен в HeartbeatSilenceSec (60 с). Раньше считался как
   Math.Max(5, MaxPingFailures) при дефолте MaxPingFailures=3 — то есть жёстко
   5 секунд, а настройка была ниже пола и не влияла ни на что. В UI предел
   тоже был 10. MaxPingFailures сохранён для чтения старых settings.ini.

2. Решение о переподключении принимает e2e-проверка проброса, а не тишина
   heartbeat. Поднимается ForwardedPortLocal на серверный RemotePort, и
   TCP-подключение к нему проходит весь маршрут по кругу: процесс -> SSH ->
   слушатель обратного проброса на сервере -> SSH обратно -> LocalPort.
   Это ловит и обратный случай, когда проброс завис, а heartbeat бодро отвечает.
   Рвём только после ProbeFailuresBeforeReconnect (2) неудач подряд.

Если порт проверки поднять не удалось, проверка считается пройденной — иначе
неисправная диагностика начала бы рвать рабочий туннель.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-17 15:13:09 +03:00
kislovdm 24f8aefefa откат
.NET Core Desktop / build (Debug) (push) Has been cancelled
v1.0.26
2026-07-23 16:52:40 +03:00
kislovdm 07af80d3ae откат 2026-07-23 16:52:32 +03:00
kislovdm 8dd0470bcf откат 2026-07-23 16:52:21 +03:00
kislovdm dc878569ad откат 2026-07-23 16:51:47 +03:00
kislovdm 724644c8eb ++ 2026-04-30 12:55:19 +03:00
kislovdm 23768dbe0e Исправление скрола логов
.NET Core Desktop / build (Debug) (push) Has been cancelled
v1.0.22
2026-04-30 12:33:00 +03:00
kislovdm ace23b954e auth
.NET Core Desktop / build (Debug) (push) Has been cancelled
v1.0.21
2026-04-27 01:46:52 +03:00
kislovdm a4fc8c047a auth
.NET Core Desktop / build (Debug) (push) Has been cancelled
v1.0.20
2026-04-27 01:44:48 +03:00
kislovdm 5a2639f96c reconnect
.NET Core Desktop / build (Debug) (push) Has been cancelled
v1.0.19
2026-04-27 01:37:43 +03:00
kislovdm fbd94ae1e6 readme
.NET Core Desktop / build (Debug) (push) Has been cancelled
v1.0.18
2026-04-27 01:25:02 +03:00
kislovdm cf01546b0b maxconn
.NET Core Desktop / build (Debug) (push) Has been cancelled
v1.0.17
2026-04-27 01:19:18 +03:00
kislovdm ec80bea024 maxconn
.NET Core Desktop / build (Debug) (push) Has been cancelled
v1.0.16
2026-04-27 01:14:42 +03:00
kislovdm b88006f02d maxconn
.NET Core Desktop / build (Debug) (push) Has been cancelled
v1.0.15
2026-04-27 01:11:03 +03:00
kislovdm c5ac1681f2 maxconn
.NET Core Desktop / build (Debug) (push) Has been cancelled
v1.0.14
2026-04-27 01:04:30 +03:00
kislovdm 06f2ebb1ac maxconn
.NET Core Desktop / build (Debug) (push) Has been cancelled
v1.0.13
2026-04-27 01:02:02 +03:00
kislovdm 9912ca8ba4 maxconn
.NET Core Desktop / build (Debug) (push) Has been cancelled
v1.0.12
2026-04-27 00:57:20 +03:00
kislovdm 427f16cde0 maxconn
.NET Core Desktop / build (Debug) (push) Has been cancelled
v1.0.11
2026-04-27 00:53:56 +03:00
kislovdm fe8abb589f maxconn
.NET Core Desktop / build (Debug) (push) Has been cancelled
v1.0.10
2026-04-27 00:49:24 +03:00
kislovdm ae787373dc releases
.NET Core Desktop / build (Debug) (push) Has been cancelled
v1.0.9
2026-04-27 00:48:17 +03:00
kislovdm 4f2fe7b292 releases
.NET Core Desktop / build (Debug) (push) Has been cancelled
v1.0.8
2026-04-27 00:47:40 +03:00
kislovdm 635a489cc1 releases
.NET Core Desktop / build (Debug) (push) Has been cancelled
v1.0.7
2026-04-27 00:44:39 +03:00
kislovdm 5b82edb9ee releases
.NET Core Desktop / build (Debug) (push) Has been cancelled
v1.0.6
2026-04-27 00:44:01 +03:00
kislovdm 84e0fbb959 releases
.NET Core Desktop / build (Debug) (push) Has been cancelled
v1.0.5
2026-04-27 00:36:21 +03:00
kislovdm fdebc16b37 releases
.NET Core Desktop / build (Debug) (push) Has been cancelled
v1.0.4
2026-04-27 00:32:53 +03:00
kislovdm 8467399001 Реорганизация
.NET Core Desktop / build (Debug) (push) Has been cancelled
v1.0.3
2026-04-27 00:15:02 +03:00
kislovdm 2fb673661f Первый релиз
.NET Core Desktop / build (Debug) (push) Has been cancelled
v1.0.2
2026-04-27 00:05:10 +03:00
kislovdm 88cec999be Первый релиз
.NET Core Desktop / build (Debug) (push) Has been cancelled
v1.0.1
2026-04-27 00:03:49 +03:00
kislovdm 31a1650c7c init 2026-04-27 00:03:23 +03:00
kislovdm e6147d9b83 first commit 2026-04-27 00:00:26 +03:00