Delen via


Deel 3.2 : Linux-taakbeheerders, top en htop

Van toepassing op: .NET in Linux

In dit artikel wordt uitgelegd hoe u hulpprogramma's en htop opdrachtregelprogramma's kunt gebruiken top om processen te bewaken.

Voorwaarden

Net als in de vorige delen is dit onderdeel gestructureerd om meer nadruk te leggen op de theorie en principals die moeten worden gevolgd wanneer u begint met het oplossen van problemen. Er zijn geen vereisten. U moet echter de volgende items al hebben ingesteld als u alle stappen van deze training tot nu toe hebt gevolgd:

  • Nginx heeft twee websites:
    • De eerste website luistert naar aanvragen met behulp van de hostheader myfirstwebsite (http://myfirstwebsite) en stuurt de aanvragen door naar de demo ASP.NET Core-toepassing die luistert op poort 5000.
    • De tweede website luistert naar aanvragen met behulp van de buggyamb (http://buggyamb) hostheader en stuurt de aanvragen door naar de tweede ASP.NET Core voorbeeld buggy-toepassing die luistert op poort 5001.
  • Beide ASP.NET Core-toepassingen worden uitgevoerd als services die automatisch opnieuw worden opgestart wanneer de server opnieuw wordt opgestart of de toepassingen niet meer reageren of mislukken.
  • Een lokale Linux-firewall is ingeschakeld en geconfigureerd om SSH- en HTTP-verkeer toe te staan.

Doel van dit deel

Wanneer u een prestatieprobleem oplost, moet u mogelijk het CPU- en geheugengebruik van een proces bewaken om te begrijpen hoe het resourceverbruik zich in de loop van de tijd ontwikkelt. In Windows kunt u Taakbeheer gebruiken om dit te doen. Linux heeft verschillende hulpprogramma's die hetzelfde willen bereiken.

In dit gedeelte worden de top hulpprogramma's en htop opdrachtregelprogramma's voor het bewaken van processen onderzocht.

top

Als u het equivalent van Taakbeheer in Linux wilt openen, voert u de top opdracht uit.

Schermopname van de bovenste opdracht.

In dit voorbeeld kunt u in het eerste vermelde proces voor PID 19933 zien dat het proces een hoog CPU-gebruik vertoont en dat het geheugengebruik ook hoog is.

Kolommen selecteren en deselecteren

Als u kolommen wilt toevoegen of verwijderen in de weergave die het top hulpprogramma biedt, selecteert u F terwijl u het hulpprogramma uitvoert. De kolommen die zijn gemarkeerd met een sterretje (*) zijn de kolommen die zijn geselecteerd voor weergave. Gebruik de pijltoetsen om door de beschikbare kolommen te bladeren en gebruik de spatiebalk om de kolommen te selecteren of de selectie op te heffen. Selecteer vervolgens Esc om af te sluiten.

Schermopname van gegevens over kolommen.

De wijzigingen worden opgeslagen voor uw gebruikersaccount. De volgende keer dat u wordt uitgevoerd top, ziet u de kolommen die u hebt geselecteerd.

De uitvoer filteren op gebruikers

Als u zich wilt richten op problematische scenario's voor resourceverbruik, is het belangrijk om te weten hoe u de top uitvoer filtert. Een van de meest voorkomende methoden is het filteren van processen op gebruikersnaam. U kunt U selecteren en vervolgens de gebruikersnaam typen. In de volgende schermopname ziet u het top hulpprogramma waarmee de beschikbare procesmomentopnamen voor de www-data-gebruiker worden gefilterd.

Schermopname van gebruikersgegevens.

Wanneer u Enter selecteert, ziet u de processen die worden uitgevoerd door de opgegeven gebruiker (de www-data-gebruiker in dit voorbeeld).

Schermopname van gebruikersgegevens.

Wanneer u de uitvoer van de gefilterde top weergave inspecteert, ziet u dat twee van de processen .NET-processen zijn. Met deze twee processen worden de twee ASP.NET Core-toepassingen uitgevoerd, terwijl de andere twee processen deel uitmaken van Nginx.

U kunt filters gebruiken wanneer u de top opdracht rechtstreeks uitvoert. Als u bijvoorbeeld de top -u www-data opdracht uitvoert, levert deze dezelfde uitvoer op als u zou krijgen als u het top hulpprogramma zou openen en U selecteert om te filteren op gebruiker.

Niet-actieve processen verwijderen

Selecteer I of voer de top -i opdracht uit om de top uitvoer te filteren om alleen de processen weer te geven die CPU verbruiken. In de volgende schermopname ziet u de uitvoer van de top -i -u www-data opdracht. U ziet dat de top uitvoer de niet-actieve processen verbergt, ook al zijn er vier processen die zijn gestart met het gebruikersaccount www-data. Alleen het proces met PID=19933 verbruikt CPU.

Schermopname van gegevens verwijderen.

Selecteer ik opnieuw om de schakelaar in of uit te schakelen en ook de niet-actieve processen weer te geven.

Processen beëindigen

Als u een proces wilt doden of beëindigen, moet u een kill-signaal naar het proces verzenden. Misschien herinnert u zich misschien dat we de sudo kill -9 <PID> opdracht eerder hebben gebruikt om een proces te beëindigen. U kunt processen ook doden met behulp van top. Selecteer K om een proces te beëindigen terwijl top het wordt uitgevoerd en typ vervolgens de PID van het proces dat u wilt beëindigen.

Schermopname van opdracht doden.

Nadat u Enter hebt geselecteerd, top wordt u gevraagd naar het signaaltype. Selecteer Nog één keer Enter om het signaal 'beëindigen' (15/sigterm) te verzenden.

Schermopname van de opdracht Top beëindigen.

Na een paar seconden ziet u dat het proces voor PID 122632 ontbreekt in de lijst. Houd er rekening mee dat in de lijsten het '122632'-proces overeenkomt met de BuggyAmb ASP.NET Core-toepassing. Omdat het is geconfigureerd om automatisch te starten, ziet u dat een nieuw .NET-proces met een nieuwe PID wordt gestart na het afsluiten.

htop

Htop is een procesviewer en een tekstmodustoepassing voor systeembewaking in realtime, vergelijkbaar met top. Het is eenvoudig te gebruiken en er wordt een volledige lijst weergegeven met de processen die worden uitgevoerd.

Het htop hulpprogramma is vooraf geïnstalleerd in de distributie van Ubuntu Linux die wordt gebruikt om de virtuele server voor deze cursus te installeren. Als htop deze niet is geïnstalleerd in uw Linux-distributie, kunt u de pakketbeheerders in Linux gebruiken om deze te installeren. (Zie Deel 1.3- Installeer .NET in Linux voor meer informatie.)

Voer de htop opdracht uit om het hulpprogramma te starten. U ziet een kleurrijke uitvoer die lijkt op de volgende:

Schermopname van de opdracht kill htop.

Notitie

De onderste regel geeft de functietoetsen aan die u kunt gebruiken. Selecteer F6 om op verschillende opties te sorteren, gebruik de pijltoetsen om de PERCENT_MEM kolom te selecteren en selecteer vervolgens Enter. Hiermee worden de processen gesorteerd op geheugengebruik.

Schermopname van geheugengebruik.

Net als bij de top opdracht kunt u sneltoetsen gebruiken voor verschillende functies. Selecteer bijvoorbeeld U om de gebruikersnaam in een lijst te selecteren.

Schermopname van gebruikersnaamgegevens.

Er is echter iets verwarrends in de htop uitvoer. Op basis van de uitvoer van de laatste voorbeelden ziet u vier processen voor de gebruiker met www-data. We zien echter dat er nog veel meer items zijn. Wat kan dit gedrag veroorzaken?

Het verschil in de uitvoer treedt op omdat htop zowel processen als de bijbehorende threads standaard worden weergegeven. Tenzij u de threads wilt zien, raden we u aan de threadweergave altijd uit te schakelen om de uitvoer duidelijker te maken. Als u de threadweergave wilt uitschakelen en alleen de processen wilt zien, selecteert u Shift+H. In de volgende schermopname ziet u de processen zonder threads.

Schermopname van procesgegevens.

Als u een proces moet beëindigen, selecteert u het proces met behulp van de pijltoetsen, selecteert u F9 en selecteert u Vervolgens Enter om het signaal 'beëindigen' te verzenden.

Schermopname van beëindigingsgegevens.

Dit beknopte overzicht moet u inzicht geven in welke processen resources op uw systeem worden uitgevoerd en verbruikt. Als u wilt afsluitenhtop, selecteert u F10 of Ctrl+C.

Volgende stappen

In het volgende deel van deze serie (deel 3.3: foutopsporingsprogramma's, kerndumps en het verzamelen van kerndumps) worden foutopsporingsprogramma's en dumpbestanden besproken.