Tugport optimiert die API-Leistung durch Caching des Docker-Zustands im Speicher
Tugport v0.1.28 führt ein In-Memory-Caching für Dienstzustände und Festplattennutzung ein, eliminiert langsame Docker-Abfragen und reduziert die API-Latenz auf das Niveau leichtgewichtiger Endpunkte.
Automatisch aus dem englischen Original übersetzt.
Tugport, ein Open-Source-Self-Hosted-Docker-Management-Panel, hat seine API-Antwortzeiten erheblich verbessert, indem es von Echtzeit-Docker-Abfragen auf In-Memory-Caching umgestellt hat. Ab der am 26. Oktober 2026 veröffentlichten Version 0.1.28 liefert die Anwendung Dienststatus, Metriken zur Festplattennutzung und Update-Prüfungen aus zwischengespeicherten Werten, die im Hintergrund aktualisiert werden, anstatt Benutzeranfragen zu blockieren.
Was passiert ist
Vor diesem Update litt das Tugport-Panel unter spürbaren Latenzzeiten beim Laden von Projektlisten oder Serverstatistiken. Jede Anfrage nach dem Dienstzustand erforderte, dass die API Container auf jedem verbundenen Server auflistete – ein Prozess, der auf einem ausgelasteten System etwa 100 Millisekunden pro Auflistung dauern konnte. Ebenso war die Berechnung der Docker-Festplattennutzung mit der Größenbestimmung jedes Volumes verbunden, eine Aufgabe, die Sekunden dauern konnte, während das Prüfen auf Software-Updates bei jedem Besuch der Einstellungsseite das Risiko barg, die Rate Limits für nicht authentifizierte GitHub-Aufrufe zu erreichen.
Die Lösung, implementiert in Commit b460853 über Pull Request #39, umfasst zehn Dateien und 107 Zeilen hinzugefügten Code. Der Entwickler erkannte, dass die Proxy-Komponente des Panels bereits eine aktuelle Routing-Tabelle für das Traffic-Management pflegte. Durch die Offenlegung dieses internen Zustands gegenüber der API kann das Panel Fragen zum Container-Status beantworten, ohne den Docker-Daemon direkt abzufragen. Für langsamere, weniger kritische Daten wie Festplattennutzung und Update-Verfügbarkeit nutzt das System nun eine „Stale-While-Revalidate“-Strategie, die gecachte Daten sofort bereitstellt, während sie im Hintergrund aktualisiert werden.
Tests vom 14. November 2026 gegen das live laufende Panel der Version 0.1.35 bestätigten die Wirksamkeit dieser Änderungen. Die Zeit, die benötigt wurde, um alle Dienste aufzulisten, war statistisch nicht mehr von der schnellsten API-Endpunkt-Routine zu unterscheiden, die lediglich die Anwendungsversion zurückgibt. Der Unterschied in den Antwortzeiten war geringer als das Netzwerkrauschen, was darauf hindeutet, dass die rechenintensive Docker-Introspektion erfolgreich aus dem kritischen Pfad der Benutzeranfragen entfernt wurde.
Wichtige Details
- Versionsveröffentlichung: Die Caching-Verbesserungen wurden in Tugport v0.1.28 am 26. Oktober 2026 eingeführt.
- Caching des Dienstzustands: Die API liest nun aus einer gemeinsamen Momentaufnahme der Container-Zustände, die vom Proxy verwaltet wird. Dieser baut seine Tabelle bei Docker-Ereignissen und alle 30 Sekunden neu auf.
- Ereignisbehandlung: Um eine sofortige Sichtbarkeit neuer oder gelöschter Dienste zu gewährleisten, hört der Proxy nun zusätzlich zu Start-, Stopp- und Gesundheitsänderungen auch auf Docker-
create- unddestroy-Ereignisse. - Aktualität der Festplattennutzung: Docker-Festplattennutzungsdaten werden fünf Minuten lang gecacht, wobei Hintergrundaktualisierungen sicherstellen, dass auch die erste Anfrage nach einem Neustart schnell beantwortet wird.
- Update-Prüfintervall: Prüfungen auf neue Releases auf GitHub werden zehn Minuten lang gecacht, um Rate Limits zu vermeiden und externe Roundtrips zu reduzieren.
- Leistungsergebnis: Bei v0.1.35 betrug die Median-Antwortzeit des
/api/services-Endpunkts 90 ms, vergleichbar mit den 87 ms Median für den leichtgewichtigen/api/me-Endpunkt.
Hintergrund
Das Verständnis dieser Optimierung erfordert einen Blick darauf, wie Docker-Management-Tools typischerweise mit dem Docker-Daemon interagieren. Die meisten Panels fragen die Docker-API direkt ab, wann immer ein Benutzer ein Dashboard lädt. Dies beinhaltet Interprozesskommunikation und in verteilten Setups Netzwerkanrufe an Remote-Hosts. Operationen wie das Auflisten aller Container oder die Berechnung der Größe von Volumes sind computationally teuer, da Docker Metadaten für jedes Objekt inspizieren muss.
Das hier verwendete Konzept wird oft als „stale-while-revalidate“ bezeichnet. Anstatt einen Benutzer auf frische Daten warten zu lassen, stellt das System den zuletzt bekannten guten Wert sofort bereit. Gleichzeitig löst es einen Hintergrundprozess aus, um die neuesten Daten abzurufen. Schlägt der Hintergrundabruf fehl, behält das System den alten Wert bei und wartet auf das nächste Intervall, bevor es erneut versucht. Dieses Muster ist in Webbrowsern für das Caching von Assets üblich, wird aber seltener auf das Backend-State-Management in Infrastruktur-Tools angewendet, wo Genauigkeit oft vor Geschwindigkeit priorisiert wird.
Warum es wichtig ist
Für Teams, die ihre eigene Infrastruktur betreiben, ist die Reaktionsfähigkeit des Dashboards ein Schlüsselfaktor für die betriebliche Effizienz. Ein langsames Panel entmutigt häufige Kontrollen, was potenziell zu verzögerter Erkennung von Problemen führen kann. Indem Tugport die Latenz von Dienstaufzählungen auf das Niveau einfacher Metadatenaufrufe reduziert, stellt es sicher, dass sich die Oberfläche auch dann flüssig anfühlt, wenn die Anzahl der verwalteten Container wächst. Dies ist besonders wichtig für Self-Hoster, die möglicherweise Dutzende von Diensten auf begrenzter Hardware betreiben, wo jede Millisekunde CPU-Zeit, die beim Monitoring-Overhead eingespart wird, für tatsächliche Workloads genutzt werden kann.
Darüber hinaus reduziert dieser Ansatz die Last auf den Docker-Daemon selbst. Das ständige Auflisten von Containern und die Berechnung der Festplattennutzung können erhebliche I/O- und CPU-Ressourcen verbrauchen, insbesondere auf Servern mit vielen Volumes oder aktiven Builds. Durch das Cachen dieser Ergebnisse minimiert Tugport seinen Fußabdruck auf dem Host-System und lässt mehr Ressourcen für die Anwendungen frei, die es verwalten soll. Dies entspricht dem übergreifenden Ziel des Self-Hosting: Maximierung des Nutzens bei Minimierung des administrativen Aufwands.
Was Sie tun können
- Tugport aktualisieren: Wenn Sie Tugport nutzen, stellen Sie sicher, dass Sie Version 0.1.28 oder höher verwenden, um von den Leistungsverbesserungen zu profitieren.
- Caching-Strategien prüfen: Untersuchen Sie Ihre eigenen internen Tools auf ähnliche Muster, bei denen Echtzeitpräzision nicht strikt erforderlich ist, und erwägen Sie die Implementierung von „Stale-While-Revalidate“-Logik für schwere Abfragen.
- Proxy-Ereignisse überwachen: Wenn Sie ähnliche Tools warten, überprüfen Sie, ob Ihre Event-Listener alle Lifecycle-Stadien abdecken, einschließlich Erstellung und Zerstörung, um veraltete UI-Zustände zu vermeiden.
- Rate Limits prüfen: Auditieren Sie externe API-Aufrufe in Ihren Self-Hosted-Tools, wie z. B. GitHub-Update-Prüfungen, und implementieren Sie Caching, um das Erreichen von Rate Limits während Spitzenlastzeiten zu verhindern.
- Benchmarking Ihrer API: Verwenden Sie Tools, um die Endpunkt-Latenz unter Last zu messen, und vergleichen Sie datenintensive Endpunkte mit leichtgewichtigen, um potenzielle Engpässe zu identifizieren.
- Hintergrund-Worker in Betracht ziehen: Lagern Sie teure Berechnungen in Hintergrund-Tasks aus, die einen gemeinsamen State-Store aktualisieren, damit Ihre Haupt-API-Threads reaktionsfähig bleiben.



