2016-08-02 18 views
0

Ich habe einen Rest-Service in einem Docker-Container mithilfe von uwsgi und nginx bereitgestellt. Wenn ich diesen Python-Kolben-Rest-Service innerhalb Docker Container laufen, für die erste Stunde Service funktioniert gut, aber nach irgendwann irgendwie Nginx und Rest-Service aus irgendeinem Grund stoppt.Der Service innerhalb des Docker-Containers stoppt nach einiger Zeit

Hat jemand mit einem ähnlichen Problem konfrontiert? Gibt es eine bekannte Lösung für dieses Problem?

+0

können Sie einige Werkzeuge wie [ptrace/strace & Freunde] untersuchen (http://jvns.ca/blog/2014/04/20/debug-your-programs-like-theyre-closed-source/) –

Antwort

1

Ziehen Sie in Betracht, eine docker ps -a zu tun, um den Bezeichner des gestoppten Containers zu erhalten. -a bedeutet hier nur alle der Container, die Sie auf Ihrem Rechner erhalten haben.

Dann tun Sie docker inspect und suchen Sie nach dem LogPath Attribut. Öffnen Sie die Protokolldatei des Containers, und sehen Sie, ob Sie die Ursache dafür, warum der Prozess innerhalb des Containers gestorben ist, identifizieren können. (Sie benötigen möglicherweise root-Berechtigung, um dies zu tun)

Hinweis: Ein Prozess kann wegen irgendetwas, z. code fault

Wenn in der Protokolldatei nichts Verdächtiges angezeigt wird, sollten Sie das Attribut State überprüfen. Überprüfen Sie auch das ExitCode Attribut, um zu sehen, ob Sie rückwärts arbeiten können, um zu sehen, welche Zeile Ihrer Anwendung mit diesem Code beendet werden konnte.

Überprüfen Sie auch die OOMKilled Flagge, wenn dies wahr ist, bedeutet es, dass Ihr Container aufgrund out of memory Fehler getötet werden konnte.

Nun, wenn Sie immer noch nicht herausfinden, warum, dann müssen Sie möglicherweise mehr Protokollierung in Ihre Anwendung hinzufügen, um Ihnen mehr Einblick, warum es starb.

+0

My Der Container läuft immer noch einwandfrei, aber der Dienst, der im Container ausgeführt wurde, wurde gestoppt. – user3059993

+0

Also nehme ich an, dass Ihr Prozess immer noch läuft und es immernoch funktioniert, dass Anfragen nicht mehr bedient werden? Dann vermute ich, dass es eher ein anwendungsspezifisches Problem als Docker ist. Empfehlen Sie, einige Debug-Anweisungen in Ihre Anwendung einzufügen, um zu sehen, ob Sie irgendwelche Hinweise von ihnen erhalten können oder nicht. –