it-swarm.com.de

Beim Booten ist networking.service unter Ubuntu 16.10 unglaublich langsam (5 Minuten)

Laut systemd-analyze blame benötigt networking-service mehr als 5 Minuten, um beim Booten zu starten:

systemd-analyze blame

Warum passiert das und wie kann ich es beheben?

5

Ich habe eine Lösung gefunden, obwohl es möglicherweise sinnvoller ist, sie als Problemumgehung zu bezeichnen.

Das Problem besteht darin, dass für den network.service eine Standardzeitüberschreitung von 5 Minuten festgelegt ist und aus irgendeinem Grund die vollständige Zeitüberschreitung ablaufen muss, bevor der Startvorgang fortgesetzt wird. Das Booten dauert also etwas mehr als 5 Minuten.

Die Lösung, die ich gefunden habe, besteht darin, Folgendes zu tun:

 Sudo systemctl edit networking.service

Fügen Sie die folgende Zeile hinzu:

TimeoutStartSec=10sec

Ich habe noch keine Ahnung, was die Ursache ist und was genau das Timeout ist, aber die Reduzierung des Timeouts von 5 Minuten auf 10 Sekunden lässt den Systemstart aus offensichtlichen Gründen recht schnell laufen.

Hier ist ein Link zu meiner Lösung in den Ubuntu-Foren: https://ubuntuforums.org/showthread.php?t=2342450&p=13569192#post13569192

Ich hoffe, das hilft.

3
Mark J. Bobak

Bearbeite/etc/network/interfaces und ändere "auto" für Interfaces in "allow-hotplug"

Sudo nano /etc/network/interfaces

Beispiel: Auto-Schnittstelle für Ethernet-Karte auto eth0 wechselt zu allow-hotplug eth0

Danach wechselt für mich "systemd-analyse schuld" -> networking.service von 5 min auf 41 s

8
user3055379

Nach allem, was ich gefunden habe, wäre es vielleicht angebracht, eine bessere Ursache zu finden. In meinem Fall scheint es systemd-networkd.service zu sein, das den Prozess blockiert, und außerdem ist es eine spezifische Netzwerkschnittstelle, die networkd blockiert.

Also habe ich mich für zwei Ansätze entschieden:

  1. Beenden Sie einfach den systemd-networkd-wait-online.service nach einer viel benutzerfreundlicheren Zeit. Dies kann durch Bearbeiten von/lib/systemd/system/systemd-networkd-wait-online und Hinzufügen einer Option zur ExecStart-Zeile, die den Service aufruft, erreicht werden. Um einfach das Timeout zu beschleunigen, fügen Sie --timeout = 10 hinzu, um die Wartezeit auf 10s zu verkürzen. Es ist standardmäßig 120S. Dies könnte jedoch meiner Meinung nach nicht der beste Ansatz sein, vielleicht ist es entscheidend, dass tatsächlich eine Schnittstelle verfügbar ist.

    ExecStart=/lib/systemd/systemd-networkd-wait-online --timeout=10
    
  2. Versuchen Sie, eine Schnittstelle zu ignorieren, die Ihrer Meinung nach die Hauptursache sein könnte. In meinem Fall war dies eine nicht kritische drahtlose Verbindung, die ich noch nicht richtig konfiguriert hatte. Es wurde in der netplan yaml-Datei definiert, aber ich hatte wpa_supplicant noch nicht eingerichtet, damit es als AP mit IP usw. ausgeführt werden kann. Dies war die Abhängigkeit, die den Stillstand verursachte. Also habe ich --ignore = int_wlan0 an die ExecStart-Zeile angehängt. Sicher genug, die kritischen Ethernet-Schnittstellen waren sehr schnell verfügbar, aber networkd wartete auf etwas mehr von der WLAN-Verbindung. Sobald das Ignorieren aktiviert war, sprang der Startvorgang direkt durch die 2-minütige Verzögerung.

    ExecStart=/lib/systemd/systemd-networkd-wait-online --ignore=int_wlan0
    

Dies ist sinnvoll, da "man systemd-networkd-wait-online.service" angibt, dass "darauf gewartet wird, dass alle ihm bekannten und von systemd-networkd.service (8) verwalteten Links vollständig konfiguriert sind oder fehlschlagen". . Was networkd als vollständig konfiguriert ansieht, ist eine offene Frage. Aus meiner Sicht beinhaltet dies eine IP-Adresse, dies kann jedoch nur ein Sonderfall für drahtlose Verbindungen sein. Ich weiß es nicht. Allerdings hat dieses Update die Dinge viel schneller zum Laufen gebracht und zumindest weiß ich, dass die einzige Abhängigkeit die drahtlose Verbindung war.

0
Aidan Walton

Das Hinzufügen von TimeoutStartSec=10sec hat bei mir nicht funktioniert - ich musste eine kleine Änderung vornehmen. Als ich /lib/systemd/system/networking.service ansah, sah ich, dass das Konfigurationsattribut unter [Service] verschachtelt war.

Ich habe /etc/systemd/system/networking.service.d/override.conf so bearbeitet, dass es wie folgt aussieht:

[Service]
TimeoutStartSec=10sec

Und jetzt funktioniert es

0
JD Wolk