Docker - Ressource temporarily not available

  • Hi, ich habe ein Problem mit docker-compose auf einem mit Virtuozzo gehosteten VPS.

    Ich möchte auf dem Server ein paar Webservices hinter nginx-prox zusammen mit docker-letsencrypt-nginx-proxy-companion hosten.


    ##Setup

    Der Server läuft mit 4GV vRAM und 4 vKernen
    Betriebssystem ist Ubuntu 18.04.4

    Docker version 19.03.6, build 369ce74a3c
    docker-compose version 1.17.1, build unknown



    ##Das Problem

    Sobald ich auf dem Server mehr als 8 Container starten will, bekommen ich scheinbar zufällig eine ganze Reihe verschiedener Fehler. Wann genau welcher davon auftritt kann ich kaum ausmachen. Ich poste hier mal ein paar Fehler, die auftreten, wenn ich einen Joomla Container mit MariaDB starten will:


    - OCI runtime create failed

    ERROR: for joomla_joomladb_1 Cannot start service joomladb: OCI runtime create failed: unable to retrieve OCI runtime error (open /run/containerd/io.containerd.runtime.v1.linux/moby/741c[...]6e3/log.json: no such file or directory): fork/exec /usr/sbin/runc: resource temporarily unavailable: unknown


    - socket zurückgesetzt

    ERROR: for joomla_joomladb_1 Cannot start service joomladb: read unix @->@/containerd-shim/24f42b8[...]32fa1.sockread: connection reset by peer: unknown


    - pthread_create failed: Resource temporarily unavailable
    Ganze Fehlermeldungen hierzu habe ich momentan leider nicht. Was aber immer auftaucht war sowas wie parent id not found

    - fork failed.

    Oft resultiert das dann darin, dass ich den Server in keinster Weise mehr bedinen kann. Die schon laufenden Container bieten zwar online ihren Service noch an, ich kann aber die Konsole nicht mehr bedienen. Ich bekomme dann bei jedem Tastenanschlag ein fork failed. Ressoucre temporarily not available Das einzige, was ich dann noch tun kann ist eine andere Shell (z.B. sh) zu öffnen und in der ein suzu machen. Aber sämliche Kommandos wie reboot, shutdown, ls, docker sind nicht mehr möglich. Ich kann dann nur noch über das Webinterface das Providers einen reboot machen.


    ## Lösungsversuche

    - Bei Recherchen stoße ich immer nur auf Hinweise dazu, dass die Anzahl der Tasks in Ubuntu begrenzt ist. Die zugehörige Config hochzuschrauben hilft aber auch nicht. (Ich habe hierzu die /etc/systemd/system.conf geändert und per `systemctl edit docker.servicemein Glück versucht)


    $ systemctl show --property=DefaultTasksMax

      DefaultTasksMax=4659

    $ systemctl status docker

    ...

      Tasks: 52

    ...


    - Ich habe das System einmal auf meinem Laptop in Quemu aufgesetzt. Gleiche Docker-Container, gleicher RAM, gleich viele CPU Kerne, gleiche SSH einstellungen, gleiche cron Jobs, gleiche shell (zsh mit Plugins). Hier rennt alles wie erwartet...

    - Wenn ich andere Container dafür beende, dann kann ich dafür einen anderen starten. Es scheint also tatsächlich an der Anzahl der Container zu liegen und nicht an der jeweiligen Konfiguration.

    Wenn 8 Container laufen, kann ich ich auch z.B. den hello-world container nicht starten.

    - Ich habe den Hosting-Provider kontaktiert, der hat mich hierbei aber auch nur auf eine mögliche Begrenzung duch "DefaultTaskMax" hingewiesen und gemeint, sie würden die Maschine von außen nicht limitieren.


    Hier zu sehen ist das nervige Problem mit "fork failed", z.B. wenn ich versuche sudo zu schreiben.

    [1]: https://i.stack.imgur.com/cXzNw.png

    Hier ein Beitrag zu DefaultTaskMax:

    [2]: https://success.docker.com/art…s-due-to-tasksmax-setting

  • Danke für den Hinweis! Die Datei heißt /proc/user_beancounters

    Wenn ich das richtig sehe, kann ich hier aber nur Informationen einsehen und nichts ändern oder?

    Die Werte sind aber bei mir alle irrsinnig hoch. Nur "nomproc" ist auf 400. Da ich aber laut top/ps nur 74 Prozesse laufen habe scheint das für mich auch nicht der Grund zu sein...

  • Hm... Die Kopfzeile in dem File sieht so aus:

    resource - held - maxheld - barrier - limit - failcnt

    Bei numproc sieht das so aus :

    numproc - 386 - 386 - 400 - 400 - 0


    Du hast wohl Recht mit deiner Annahmne... Dann würde ich aber davon ausgehen, dass der failcnt nicht mehr bei 0 steht

    Hier habe ich eine Erklärung gefunden. held und maxheld sagen also aus, dass ich mich an der Grenze befinde.

    https://virtuozzosupport.force.com/s/article/000013558


    Na toll. Dann hilft wohl nichts außer einen besseren Provider zu finden :D

    (Ich bin zwar von den netcup Leistungen sehr begeistert, für so ein "kleines" Projekt neben dem Studium sind mir die Angebote hier aber leider zu teuer)

  • Seh ich genau so. Mit Virtuozzo gibt‘s immer irgendwelche miesen Überraschungen... ?(

    Meine Minecraft-Plugins auf SpigotMC (Open Source): www.spigotmc.org/members/mfnalex.175238/#resources

    Discord: discord.jeff-media.com

  • Ich hab vor langer Zeit mal mit Servern bei St**to angefangen. Einerseits waren sie elends langsam (schonmal 5 Sekunden auf die Ausgabe eines 'ls' gewartet?) wo der Support nicht helfen konnte. Und dann musste ich noch die vielen Einschränkungen von Virtuozzo lernen. Inklusive Beschränkungen die dafür sorgen dass man zwar XX GB Platz hat auf der Platte aber keine Datein mehr anlegen kann da die inodes einfach mal voll sind (inodes so um den Faktor 100 geringer als bei einem normalen Ubuntu). Wenn da me Website ordentlich cached ists aus mit neuen Dateien und alles kommt zum Stillstand.


    Seitdem nur noch sehr ungern Virtuozzo und noch viel ungerner dieser Hoster...

  • Genau durch das erwähnte inode Problem und die elendige IO-Perfomance des Mitbewerbers bin ich vor 2-3 Jahren bei netcup gelandet :D

    Meine Minecraft-Plugins auf SpigotMC (Open Source): www.spigotmc.org/members/mfnalex.175238/#resources

    Discord: discord.jeff-media.com

  • Ich will hier jetzt keinen Mitbewerber pushen, immerhin bin ich ja im Netcup Forum :D

    Aber ich habe, nachdem ich hier die Lösung des Problems gefunden habe, gleich einen Serverumzug weg von Str... unternommen und siehe da: alles hat aufs erste Mal funktioniert.


    Das ist wirklich nervig, wenn man (gerade als Server Neuling) die ganze Zeit den Fehler bei sich selbst sucht.


    Ich möchte nur noch betonen, dass ich so genervt war, dass ich am Sonntag Abend auch noch dem netcup-Support geschrieben habe. Ich habe innerhalb einer halben Stunde eine Antwort mit mehreren Links bekommen! Auch wenn der hier leider erstmal nicht weitergeholfen hat - das hat jegliche Erwartungen übertroffen :)

    Danke netcup!

  • Hallo zusammen,


    da ich finde, dass dieses Topic in der Google-Suche ruhig etwas weiter oben stehen könnte, möche ich hier auch meine Erfahrungen schildern.


    Ich hatte das gleiche Problem wie der Topic-Ersteller, habe viele Dinge getestet (ulimit, DefaultTasksMax, etc.), konnte aber keine Lösung finden. Als mir alle Ideen ausgegangen sind, bin ich durch Zufall auf diesen Foreneintrag gestoßen. (Danke!)


    Durch einen Blick in die Datei /proc/user_beancounters konnte ich feststellen, dass die Fehler auftraten, wenn die Grenze numproc=400 erreicht wurde. Daraufhin habe ich den Kundensupport von Str... kontaktiert und das Problem geschildert. Die Antwort war, dass sie diese Virtualisierungs-Limitierungen nicht aufheben oder anheben können.


    Deshalb werde ich wohl auch den Hoster wechseln (müssen). Da ich aktuell viel Gutes von NetCup gelesen habe und die VServer Angebote interessant aussehen, werde ich NetCup eine Chance geben.