Skip to content

v2.12.3

Choose a tag to compare

@github-actions github-actions released this 10 Jun 16:58
cd4555f

Главное: кратное снижение потребления CPU на роутере (под нагрузкой ~14x, в простое ~5x), нативный ICMP-мониторинг без вызова внешнего ping, ускорение загрузки состояния туннелей и переход на Go 1.26.

Производительность

  • Кеш SHA256 бинаря sing-box/api/singbox/status больше не хеширует ~80MB-бинарь при каждом опросе (на MIPS это съедало целое ядро при открытом UI); хеш считается один раз и инвалидируется при обновлении бинаря (PR #351).
  • TCP-пробинг в матрице мониторинга — вместо HTTPS HEAD: метрика и так была TCP RTT, а отбрасываемый TLS-handshake стоил секунды CPU на каждую ячейку (до 76% потребления в простое).
  • Состояние туннелей через batch-POST RCI — FetchSummary и NativeWG-state переведены с прямых GET (~115ms) на batch-POST (~12-18ms, ~10x), плюс кеш состояния TTL 2s с single-flight для read-путей.
  • Модель CPU роутера определяется один раз за процесс (раньше — regexp-скан системной библиотеки при каждом обновлении сведений).
  • Итог на живом mipsel: открытый UI 91–107% ядра → 7%, простой 11.4% → 2.1%.

Мониторинг

  • Нативный ICMP (x/net/icmp) вместо exec /opt/bin/ping — pingcheck и матрица мониторинга шлют echo напрямую с привязкой к интерфейсу туннеля (PR #348 в составе #351).
  • Устойчивый DNS-резолв проверок — checkURL резолвится через DNS туннеля с кешем и fallback-цепочкой (tunnel-DNS → stale-кеш → системный).

Сборка

  • Go 1.26.4 для всех архитектур — снят пин Go 1.23 для MIPS (EOL); цена — бинарь mipsel больше на ~3.2MB, замерено и принято осознанно.
  • Зависимости: x/net v0.55.0, protobuf v1.36.11.