80eab1db93
OfflineDetector дёргал connMgr.IsOnline() на каждый HTTP-запрос, а тот при офлайне синхронно лез в сеть и держал дайл/пинг с таймаутом 3с под общей блокировкой состояния — из-за этого /health и другие запросы блокировались на секунды прямо в обработчике. IsOnline() теперь чистое чтение кэша. Реальный сетевой опрос вынесен в фоновый цикл (ConnectionManager.Start/Stop), а сами попытки dial/ping сериализуются через отдельный connMu и никогда не держат блокировку состояния во время сетевого I/O — поэтому конкурентные читатели статуса больше не ждут таймаут MySQL. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>