Heim >Web-Frontend >js-Tutorial >Was soll ich tun, wenn die Knotendienst-CPU zu hoch ist? Lassen Sie uns über Ideen zur Fehlerbehebung sprechen

Was soll ich tun, wenn die Knotendienst-CPU zu hoch ist? Lassen Sie uns über Ideen zur Fehlerbehebung sprechen

青灯夜游
青灯夜游nach vorne
2022-09-15 19:46:253843Durchsuche

nodeWas soll ich tun, wenn die Service-CPU zu hoch ist? Wie überprüfen? Der folgende Artikel wird die Fehlerbehebungsideen für eine zu hohe Knotendienst-CPU klären und mit Ihnen teilen. Ich hoffe, er wird Ihnen hilfreich sein!

Was soll ich tun, wenn die Knotendienst-CPU zu hoch ist? Lassen Sie uns über Ideen zur Fehlerbehebung sprechen

Helfen Sie einem Kollegen, ein Problem mit übermäßiger CPU zu untersuchen.

  • Die CPU kann nicht heruntergefahren werden, nachdem sie erhöht wurde. Schließlich stellte der Kollege fest, dass eine bestimmte Abhängigkeit auf eine Hauptversion und die standardmäßige öffentliche Redis aktualisiert wurde Die Konfiguration war offline. (Das Projekt ist älter, niemand hat es schon lange berührt), aber Sie müssen den Redis-Dienst im Geschäftscode konfigurieren und schließen. Auf der Unternehmensseite besteht eine Informationslücke, daher wissen sie nicht, wie sie Redis schließen sollen. Nachdem sie online gegangen sind, versuchen sie daher immer wieder, eine Verbindung zu Redis herzustellen (eine weitere Anfrage bedeutet einen weiteren Wiederholungsversuch). Fassen Sie die Ideen zur Fehlerbehebung wie folgt zusammen. Willkommen zum Hinzufügen: Ideen zur Fehlerbehebung: 0 Starten Sie die Instanz neu. Einige Probleme können durch einen Neustart der Instanz gelöst werden.
Starten Sie zunächst die Instanz neu. Dies ist ein notwendiger Schritt, um den Dienst zuerst verfügbar zu machen. Wenn die nachfolgende CPU immer noch zu schnell ansteigt, müssen Sie möglicherweise zunächst ein Rollback des Codes in Betracht ziehen. Wenn der Anstieg nicht schnell erfolgt, können Sie das Problem so schnell wie möglich ohne Rollback beheben

1. Bestimmen Sie, ob es durch den Knotenprozess verursacht wird

Befehl 1: top

Sie können feststellen, dass es hauptsächlich der Knotenprozess ist, der CPU beansprucht. [Verwandte Tutorial-Empfehlungen:

nodejs-Video-Tutorial

]

[root@*** ~]# top

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                     
680 root      20   0 2290976 168176  34976 S  30.3  2.0 103:42.59 node                                                                                                                        
687 root      20   0 2290544 166920  34984 R  26.3  2.0  96:26.42 node                                                                                                                        
 52 root      20   0 1057412  23972  15188 S   1.7  0.3  11:25.97 ****                                                                                                           
185 root      20   0  130216  41432  25436 S   0.3  0.5   1:03.44 ****                                                                                                         
...

Befehl 2: vmstat

Schauen Sie sich zunächst einen vmstat 2-Befehl an, was bedeutet, dass alle zwei Sekunden

[root@*** ~]# vmstat 2
procs -----------memory---------------- ---swap-- -----io---- --system-- -----cpu-----
 r  b      swpd  free   buff   cache      si   so    bi    bo   in cs   us sy id wa st
 0  0      0 233481328 758304 20795516    0    0     0     1    0    0  0  0 100  0  0
 0  0      0 233480800 758304 20795520    0    0     0     0  951 1519  0  0 100  0  0
 0  0      0 233481056 758304 20795520    0    0     0     0  867 1460  0  0 100  0  0
 0  0      0 233481408 758304 20795520    0    0     0    20  910 1520  0  0 100  0  0
 0  0      0 233481680 758304 20795520    0    0     0     0  911 1491  0  0 100  0  0
 0  0      0 233481920 758304 20795520    0    0     0     0  889 1530  0  0 100  0  0
top
  • 可以发现,主要是node进程在占用CPU。【相关教程推荐:nodejs视频教程】rrreee

命令二: vmstat

    Prozesse erfasst werden
  • r #Stellt die laufende Warteschlange dar (dh wie viele Prozesse tatsächlich der CPU zugewiesen sind). Wenn dieser Wert die Anzahl der CPUs überschreitet, tritt ein CPU-Engpass auf. Dies hängt auch mit der Auslastung von Top zusammen. Wenn die Auslastung 3 übersteigt, ist sie im Allgemeinen relativ hoch, wenn sie 5 übersteigt, ist sie hoch, wenn sie 10 übersteigt, ist sie abnormal und der Status des Servers ist sehr gefährlich . Die Auslastung von top ähnelt der Ausführungswarteschlange pro Sekunde. Wenn die Ausführungswarteschlange zu groß ist, bedeutet dies, dass Ihre CPU sehr ausgelastet ist, was im Allgemeinen zu einer hohen CPU-Auslastung führt.
    b #Stellt einen blockierten Prozess dar, einen Prozess, der auf Ressourcen wartet. Ich werde nicht viel dazu sagen, aber jeder weiß, dass der Prozess blockiert ist.
  • Speicher

    swpd #Die Größe des verwendeten virtuellen Speichers bedeutet, dass der physische Speicher Ihres Computers nicht ausreicht. Wenn dies nicht die Ursache für den Speicherverlust des Programms ist, sollten Sie den Speicher aktualisieren oder speicherintensive Aufgaben auf andere Maschinen migrieren.

  • free # Die Größe des freien physischen Speichers
  • buff #Linux/Unix-System wird zum Speichern und Zwischenspeichern des Verzeichnisinhalts, von Berechtigungen usw. verwendet.

    cache #cache wird direkt verwendet, um sich die Dateien zu merken, die wir öffnen und bearbeiten Die Dateiverarbeitungspufferung nutzt einen Teil des freien physischen Speichers zum Zwischenspeichern von Dateien und Verzeichnissen, um die Leistung der Programmausführung zu verbessern. Wenn das Programm Speicher verwendet, wird der Puffer/zwischengespeicherte Speicher schnell verbraucht.

    swap

    si #Die Größe des pro Sekunde von der Festplatte gelesenen virtuellen Speichers bedeutet, dass der physische Speicher nicht ausreicht oder der Speicher verloren geht verarbeiten und lösen. Meine Maschine verfügt über ausreichend Speicher und alles funktioniert einwandfrei.

  • so #Die Größe des virtuellen Speichers, der pro Sekunde auf die Festplatte geschrieben wird, wenn dieser Wert größer als 0 ist, wie oben.
  • io

    bi #Die Anzahl der Blöcke, die das Blockgerät pro Sekunde empfängt. Das Blockgerät bezieht sich hier auf alle Festplatten und anderen Blockgeräte im System. Die Standardblockgröße beträgt 1024 Byte.

  • bo #Die Anzahl der Die Menge der vom Blockgerät pro Sekunde gesendeten Blöcke. Wenn wir beispielsweise eine Datei lesen, muss bo größer als 0 sein. Bi und Bo liegen im Allgemeinen nahe bei 0, andernfalls ist der IO zu häufig und muss angepasst werden.
  • system

    in #Die Anzahl der CPU-Interrupts pro Sekunde, einschließlich Zeitinterrupts

  • cs #Die Anzahl der Kontextwechsel pro Sekunde. Wenn wir beispielsweise eine Systemfunktion aufrufen, müssen wir einen Kontextwechsel (Thread) durchführen Beim Umschalten und beim Umschalten des Prozesskontexts sollte dieser Wert so klein wie möglich sein. Wenn er zu groß ist, sollten Sie erwägen, die Anzahl der Threads oder Prozesse zu reduzieren Das hat sehr häufig Verschlüsselung und Entschlüsselung durchgeführt, wie Sie sehen können. Wenn wir fast 100 erreicht haben, hat die r-Ausführungswarteschlange 80 erreicht (der Computer führt Stresstests durch und seine Leistung ist schlecht).
  • sy #System-CPU-Zeit: Wenn sie zu hoch ist, bedeutet dies, dass die Systemaufrufzeit lang ist, z. B. bei häufigen E/A-Vorgängen.

    id #Leerlauf-CPU-Zeit, im Allgemeinen ist id + us + sy = 100, im Allgemeinen denke ich, dass id die CPU-Auslastung im Leerlauf ist, us die CPU-Auslastung des Benutzers und sy die CPU-Auslastung des Systems.

    wt #Warten auf IO-CPU-Zeit.

  • Üben

    procs r: Es laufen viele Prozesse und das System ist sehr ausgelastet.
    bi/bo: Die auf die Festplatte geschriebene Datenmenge ist etwas größer. Wenn es sich um eine große Datei handelt, besteht im Grunde kein Grund zur Sorge Wenn es sich um eine kleine Datei handelt, ist es grundsätzlich normal, wenn sie weniger als 2 MB beträgt Über einen längeren Zeitraum können Sie eine Optimierung in Betracht ziehen
    cpu sy: Der Referenzwert von us + sy beträgt hier 80 %. Wenn us + sy größer als 80 % ist, bedeutet dies, dass möglicherweise nicht genügend CPU vorhanden ist.
    cpu wa: Die Spalte zeigt den Prozentsatz der CPU-Zeit an, die durch E/A-Wartezeiten belegt ist. Der Referenzwert von wa beträgt hier 30 %, was bedeutet, dass die E/A-Wartezeit schwerwiegend ist. Dies kann durch eine große Anzahl zufälliger Zugriffe auf die Festplatte oder durch einen Bandbreitenengpass verursacht werden die Festplatte oder der Festplattenzugriffscontroller (hauptsächlich Blockoperationen)

Referenzlink: https://www.cnblogs.com/zsql/p/11643750.html

2. Schauen Sie sich den Codeunterschied an

Ein Neustart der Instanz hat das Problem nicht gelöst und es wird festgestellt, dass es sich um ein Problem mit dem Knotenprozess handelt. Wenn ja,

Überprüfen Sie das Online-Commit, überprüfen Sie den Codeunterschied und prüfen Sie, ob Sie das Problem finden können

3. Öffnen Sie den Laufzeit-CPU-Profiler.

Diese Vorgangsmethode ähnelt meinem anderen Artikel

Um die Online-Umgebung lokal zu simulieren, funktioniert der direkte Build möglicherweise nicht.
    Sie müssen die hässliche Komprimierung deaktivieren. Lassen Sie beispielsweise einige Umgebungsvariablen (CDN-Domänenname usw.) verweisen auf das lokale Paket, da das Paket lokal ist und nicht auf das CDN hochgeladen wird.
  • Zum Beispiel ist der Downstream-RPC vom lokalen isoliert, sodass Sie nur Code hinzufügen können, um ein Profil zu erstellennodejs.org/docs/latest…

  • Nachdem Sie die Profildatei erhalten haben, öffnen Sie sie mit Chrome devtool

  • 4. Analysieren Sie den CPU-Profiler

Kombinieren Sie den Profiler und den Code-Diff, um die Ursache zu finden. Sie können die Profildatei auch auf Was soll ich tun, wenn die Knotendienst-CPU zu hoch ist? Lassen Sie uns über Ideen zur Fehlerbehebung sprechenwww.speedscope.app/

hochladen (Datei hochladen), um das Flammendiagramm des CPU-Profils zu erhalten (Detailliertere Einführung in die Verwendung:

www.npmjs.com/package/spe...

Was soll ich tun, wenn die Knotendienst-CPU zu hoch ist? Lassen Sie uns über Ideen zur Fehlerbehebung sprechen5. Drucktestüberprüfung

Sie können ab verwenden , oder andere Drucktest-Tools

Zusammenfassung Finden Sie den GrundWas soll ich tun, wenn die Knotendienst-CPU zu hoch ist? Lassen Sie uns über Ideen zur Fehlerbehebung sprechen

Stresstest-Überprüfung

  • Weitere Informationen zu Knoten finden Sie unter:

    nodejs-Tutorial!

Das obige ist der detaillierte Inhalt vonWas soll ich tun, wenn die Knotendienst-CPU zu hoch ist? Lassen Sie uns über Ideen zur Fehlerbehebung sprechen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:juejin.cn. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen