Shinyproxy: Klarstellung zum Heartbeat für Docker-Container

Erstellt am 25. Feb. 2021  ·  4Kommentare  ·  Quelle: openanalytics/shinyproxy

Während wir Tests für Benutzer bereitstellen, merke ich, dass einige Container nicht wie erwartet heruntergefahren werden. Ich habe einige dieser Benutzer kontaktiert, um zu sehen, welches Verhalten sie haben (dh lassen sie Tabs geöffnet usw.):

image

In der Zwischenzeit habe ich mich gefragt, ob es irgendwelche konfigurierbaren Timeout-Funktionen gibt, die ich vielleicht nicht in der Dokumentation gesehen habe? Es wäre toll, ein maximales Alter des Containers oder ähnliches zu haben. Wir könnten unsere eigenen Docker-Kontrollskripte schreiben, die dies überprüfen, aber es wäre praktisch, wenn es etwas in ShinyProxy gäbe, das dies auch erlaubt.

question

Hilfreichster Kommentar

Übrigens, wir haben einige Pläne für eine max-lifetime Funktion, die die App nach einer bestimmten Zeit beendet, unabhängig davon, ob sie verwendet wird. Dies ist noch nicht implementiert und wird es wahrscheinlich nicht im nächsten Release schaffen. Ich werde Sie auf dem Laufenden halten, wenn wir anfangen, daran zu arbeiten.

Alle 4 Kommentare

+1

Hallo @jat255

ShinyProxy funktioniert derzeit wie folgt:

  • alle proxy.heartbeat-rate ShinyProxy sendet einen Heartbeat an den Client. Wenn der Client antwortet, wird der interne Status mit der aktuellen Uhrzeit aktualisiert. Der Standardwert von heartbeat-rate beträgt 10 Sekunden. Diese Heartbeats werden über den Websocket-Kanal (falls vorhanden) gesendet.
  • jede HTTP-Anfrage an eine App aktualisiert auch den internen Zustand.
  • Wenn der letzte Heartbeat eines Containers länger als proxy.heartbeat-timeout zurückliegt, beendet ShinyProxy die App. Dies sind standardmäßig 60 Sekunden.

Solange der Benutzer seinen Browser geöffnet hält und die Websocket-Verbindung geöffnet ist oder HTTP-Anfragen gesendet werden, geht ShinyProxy davon aus, dass die App verwendet wird und beendet sie daher nicht.
Beachten Sie, dass Spring auch die Sitzung des Benutzers geöffnet hält, solange die App HTTP-Anfragen sendet.

Daher kann es vorkommen, dass Apps lange leben. Ich sehe jedoch, dass Sie eine App haben, die 75 Stunden lang geöffnet ist, was etwa drei Tage entspricht. Dies würde bedeuten, dass der Computer des Benutzers drei Tage lang läuft (ohne Suspend). Könnte dies der Fall sein? Wenn nicht, haben Sie möglicherweise einen Fehler gefunden, der uns nicht bekannt ist.

Übrigens, wir haben einige Pläne für eine max-lifetime Funktion, die die App nach einer bestimmten Zeit beendet, unabhängig davon, ob sie verwendet wird. Dies ist noch nicht implementiert und wird es wahrscheinlich nicht im nächsten Release schaffen. Ich werde Sie auf dem Laufenden halten, wenn wir anfangen, daran zu arbeiten.

@LEDfan vielen Dank für die Klarstellung. Ich bin mir nicht sicher, ob die lang andauernde Sitzung ein Fehler ist oder ob jemand einen Tab auf seinem Bürocomputer ausgeführt hat (versucht, mehr Informationen vom Benutzer zu erhalten). Diese begrenzte Sitzungsdauer ist ein Sicherheitsproblem für unser IT-Sicherheitsteam (sie mögen es nicht, wenn etwas für lange Zeit eingeloggt ist, ohne dass ein Benutzer dort sitzt). Etwas wie max-lifetime wäre in der Tat nützlich. Ich denke , in der Zwischenzeit wir in einer Timeout - Funktion à la backen werden diese Idee , unsere Benutzer mit einer Warnung zu präsentieren , dass sie über abgemeldet werden, und dann die Shiny Server zu töten , wenn es keine Antwort gibt, die (wie ich verstehe) sollten die Docker-Container sauber gemacht werden. Ich werde fortfahren und dies basierend auf der obigen Klarstellung schließen. Vielen Dank!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen