Eine Fehlerbehebung bei leistungsbezogenen Problemen in der IT-Welt ist immer eine Herausforderung. Wenn Sie nicht über die richtigen Tools informiert sind, ist dies frustrierend.
Wenn Sie als Support in einer Produktionsumgebung arbeiten, müssen Sie sich höchstwahrscheinlich mit leistungsbezogenen Problemen im Internet befassen Linux Umgebung. Lassen Sie uns einige der am häufigsten verwendeten Linux-Befehlszeilenprogramme durchgehen, um leistungsbezogene Probleme zu diagnostizieren.
Hinweis: Einige der unten aufgeführten Befehle sind möglicherweise nicht standardmäßig installiert, daher müssen Sie sie manuell installieren.
lsof
lsof steht für “offene Dateien auflisten”, Um Ihnen zu helfen, alle geöffneten Dateien und Prozesse zusammen mit demjenigen zu finden, der sie geöffnet hat. Das Dienstprogramm lsof kann in einigen Szenarien bequem verwendet werden.
Zum Auflisten aller Dateien, die von einer bestimmten PID geöffnet wurden.
# lsof –p PID
Anzahl der Dateien und Prozesse zählen
[root @ localhost ~] # lsof -p 4271 | wc -l 34 [root @ localhost ~] #
Überprüfen Sie die aktuell geöffnete Protokolldatei
# lsof –p | grep-Protokoll
Finden Sie die vom Prozess verwendete Portnummer heraus
lsof -i -P |grep $PID
[root @ localhost ~] # lsof -i -P | grep 4271 nginx 4271 root 6u IPv4 51306 0t0 TCP *:80 (HÖREN) nginx 4271 root 7u IPv4 51307 0t0 TCP *:443 (HÖREN) [root @ localhost ~] #
Check out more lsof Befehlsbeispiele.
pidstat
Mit pidstat können vom Linux-Kernel verwaltete Aufgaben überwacht werden. Die Fehlerbehebung bei E / A-Problemen kann mit diesem Befehl einfach sein.
Listen Sie die E / A-Statistiken aller PIDs auf
# pidstat –d
Zum Verschieben von E / A-Statistiken für eine bestimmte PID
# pidstat –p 4271 –d
Wenn Sie für einen bestimmten Prozess eine Fehlerbehebung in Echtzeit durchführen, können Sie die E / A in bestimmten Intervallen überwachen. Das folgende Beispiel dient zur Überwachung alle 5 Sekunden.
[root @ localhost ~] # pidstat -p 4362 -d 5 Linux 3.10.0-327.13.1.el7.x86_64 (localhost.localdomain) 08 _x13_2016_ (86 CPU) 64:2:07 UID PID kB_rd / s kB_wr / s kB_ccwr / s Befehl 01:30:07 PM 01 35 0 4362 0.00 Nginx 0.00:0.00:07 01 40 0 4362 0.00 Nginx 0.00:0.00:07 01 45 0 4362 0.00 Nginx 0.00:0.00:07 PM 01 50 0 4362 0.00 Nginx
top
Wahrscheinlich ist einer der am häufigsten verwendeten Befehle unter Linux top. Mit dem Befehl top können Systemzusammenfassungsinformationen und die aktuelle Auslastung angezeigt werden.
Wenn Sie nur den Befehl top ausführen, können Sie die CPU-Auslastung, Prozessdetails, eine Reihe von Aufgaben, die Speicherauslastung, eine Reihe von Zombie-Prozessen usw. anzeigen.
top - 11:48:43 up 13 days, 17:25, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 90 total, 2 running, 88 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.0 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 1829.7 total, 388.1 free, 220.3 used, 1221.4 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 1369.4 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 186820 13400 9092 S 0.0 0.7 0:10.87 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.13 kthreadd
3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp
4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par_gp
6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H
8 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_wq
9 root 20 0 0 0 0 S 0.0 0.0 0:07.35 ksoftirqd/0
10 root 20 0 0 0 0 R 0.0 0.0 0:07.30 rcu_sched
11 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
12 root rt 0 0 0 0 S 0.0 0.0 0:00.50 watchdog/0
13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/0
15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
16 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 netns
17 root 20 0 0 0 0 S 0.0 0.0 0:00.68 kauditd
18 root 20 0 0 0 0 S 0.0 0.0 0:00.25 khungtaskd
19 root 20 0 0 0 0 S 0.0 0.0 0:00.00 oom_reaper
20 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 writeback
21 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kcompactd0
22 root 25 5 0 0 0 S 0.0 0.0 0:00.00 ksmd
23 root 39 19 0 0 0 S 0.0 0.0 0:05.63 khugepaged
24 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 crypto
25 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kintegrityd
26 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kblockd
Anzeigen von Prozessdetails für einen bestimmten Benutzer
# top –u Benutzername
Um den Vorgang abzubrechen, können Sie den oberen Bereich ausführen und drücken k
. Sie werden aufgefordert, die zu tötende PID einzugeben.
top - 11:49:39 up 13 days, 17:26, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 91 total, 1 running, 90 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.0 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 1829.7 total, 386.9 free, 221.4 used, 1221.4 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 1368.3 avail Mem
PID to signal/kill [default pid = 21261]
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5834 nginx 20 0 148712 7428 4800 S 0.0 0.4 0:02.37 nginx
ps
ps steht für Prozessstatus und weit verbreiteter Befehl, um eine Momentaufnahme des laufenden Prozesses zu erhalten. Sehr nützlich, um herauszufinden, ob ein Prozess ausgeführt wird oder nicht, und wenn er ausgeführt wird, wird die PID gedruckt.
Um die PID herauszufinden und Details durch ein Wort zu verarbeiten
[root@lab ~]# ps -ef|grep nginx
root 5833 1 0 May24 ? 00:00:00 nginx: master process /usr/sbin/nginx
nginx 5834 5833 0 May24 ? 00:00:02 nginx: worker process
root 21267 18864 0 11:50 pts/0 00:00:00 grep --color=auto nginx
[root@lab ~]#
tcpdump
Die Fehlerbehebung bei Netzwerkproblemen ist immer eine Herausforderung, und einer der wichtigsten zu verwendenden Befehle ist tcpdump.
Sie können verwenden tcpdump um die Netzwerkpakete auf einer Netzwerkschnittstelle zu erfassen.
Erfassen der Pakete auf einer bestimmten Netzwerkschnittstelle
[root@lab ~]# tcpdump -i eth0 -w /tmp/capture
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
^C9 packets captured
16 packets received by filter
0 packets dropped by kernel
[root@lab ~]#
Wie Sie oben sehen können, hat der Verkehrsfluss weiter erfasst eth0
Schnittstelle.
Zum Erfassen des Netzwerkverkehrs zwischen Quell- und Ziel-IP
# tcpdump src $ IP und dst host $ IP
Erfassen Sie den Netzwerkverkehr für den Zielport 443
# tcpdump dst port 443 tcpdump: Datenverbindungstyp PKTAP tcpdump: Ausführliche Ausgabe unterdrückt, -v oder -vv für die vollständige Protokolldecodierung verwenden, pktap abhören, Verbindungstyp PKTAP (Packet Tap), Erfassungsgröße 262144 Bytes 12: 02: 30.833845 IP 192.168.1.2.49950> ec2-107-22-185-206.compute-1.amazonaws.com.https: Flags [.], Ack 421458229, win 4096, Länge 0 12: 02: 32.076893 IP 192.168.1.2.49953 > 104.25.133.107.https: Flags [S], seq 21510813, win 65535, options [mss 1460, nop, wscale 5, nop, nop, TS val 353259990 ecr 0, sackOK, eol], Länge 0 12: 02: 32.090389 IP 192.168.1.2.49953> 104.25.133.107.https: Flags [.], Ack 790725431, win 8192, Länge 0 12: 02: 32.090630 IP 192.168.1.2.49953> 104.25.133.107.https: Flags [P.], seq 0: 517, ack 1, win 8192, length 517 12: 02: 32.109903 IP 192.168.1.2.49953> 104.25.133.107.https: Flags [.], ack 147, win 8187, length 0
Lesen Sie die erfasste Datei
# tcpdump –r filename
Beispiel: Zum Lesen einer oben erfassten Datei
# tcpdump –r /tmp/test
Erfahren Sie mehr darüber tcpdump um den Netzwerkverkehr zu erfassen und zu analysieren.
iostat
iostat steht für Eingabe-Ausgabe-Statistiken und häufig verwendet, um ein Leistungsproblem mit Speichergeräten zu diagnostizieren. Mit iostat können Sie den Auslastungsbericht für CPU-, Geräte- und Netzwerkdateisysteme überwachen.
Anzeigen von Festplatten-E / A-Statistiken
[root @ localhost ~] # iostat -d Linux 3.10.0-327.13.1.el7.x86_64 (localhost.localdomain) 08 _x13_2016_ (86 CPU) Gerät: tps kB_read / s kB_wrtn / s kB_read kB_wrtn sda 64 2 1.82 55.81 12.63 [root @ localhost ~] #
CPU-Statistiken anzeigen
[root @ localhost ~] # iostat -c Linux 3.10.0-327.13.1.el7.x86_64 (localhost.localdomain) 08 _x13_2016_ (86 CPU) avg-cpu:% user% nice% system% iowait% stehlen% Leerlauf 64 2 0.59 0.02 0.33 0.54 [root @ localhost ~] #
ldd
ldd steht für dynamische Abhängigkeiten auflisten um gemeinsam genutzte Bibliotheken anzuzeigen, die von der Bibliothek benötigt werden. Das ldd
Befehl kann nützlich sein, um das Startproblem der Anwendung zu diagnostizieren.
Wenn ein Programm aufgrund nicht verfügbarer Abhängigkeiten nicht gestartet wird, können Sie die gesuchten gemeinsam genutzten Bibliotheken ermitteln.
[root @ localhost sbin] # ldd httpd linux-vdso.so.1 => (0x00007ffe7ebb2000) libpcre.so.1 => /lib64/libpcre.so.1 (0x00007fa4d451e000) libselinux.so.1 => / lib64 / libselinux .so.1 (0x00007fa4d42f9000) libaprutil-1.so.0 => /lib64/libaprutil-1.so.0 (0x00007fa4d40cf000) libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007fa4d3e98000) libexpat.so .1 => /lib64/libexpat.so.1 (0x00007fa4d3c6e000) libdb-5.3.so => /lib64/libdb-5.3.so (0x00007fa4d38af000) libapr-1.so.0 => /lib64/libapr-1.so .0 (0x00007fa4d3680000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fa4d3464000) libdl.so.2 => /lib64/libdl.so.2 (0x00007fa4d325f000) libc.so.6 => / lib /libc.so.64 (6x0fa00007d4e2e9) liblzma.so.000 => /lib5/liblzma.so.64 (5x0fa00007d4c2) /lib79000/ld-linux-x64-86.so.64 (2x0fa00007d4a4) libuuid.so.10000 = > /lib1/libuuid.so.64 (1x0fa00007d4a2) libfreebl73000. so => /lib3/libfreebl64.so (3x0fa00007d4) [root @ localhost sbin] #
netstat
netstat (Netzwerkstatistik) ist ein beliebter Befehl zum Drucken von Netzwerkverbindungen, Schnittstellenstatistiken und zur Behebung verschiedener Netzwerkprobleme.
Anzeigen der Statistiken aller Protokolle
# netstat –s
Sie können grep verwenden, um Fehler festzustellen
[root @ localhost sbin] # netstat -s | grep-Fehler 0 Paketempfangsfehler 0 Empfangspufferfehler 0 Sendepufferfehler [root @ localhost sbin] #
Anzeigen der Kernel-Routing-Tabelle
[root @ localhost sbin] # netstat -r Kernel-IP-Routing-Tabelle Ziel-Gateway-Genmaskenflags MSS-Fenster irtt Iface-Standardgateway 0.0.0.0 UG 0 0 0 eno16777736 172.16.179.0 0.0.0.0 255.255.255.0 U 0 0 0 eno16777736 192.168.122.0 0.0.0.0 .255.255.255.0 0 U 0 0 0 virbrXNUMX [root @ localhost sbin] #
Erfahren Sie mehr Beispiele für netstat-Befehle.
free
Wenn auf Ihrem Linux-Server nicht genügend Arbeitsspeicher vorhanden ist oder Sie nur herausfinden möchten, wie viel Arbeitsspeicher aus dem verfügbaren Arbeitsspeicher verfügbar ist, hilft Ihnen der Befehl free.
[root @ localhost sbin] # free -g insgesamt verwendet kostenlos freigegebener Buff / Cache verfügbar Mem: 5 0 3 0 1 4 Swap: 5 0 5 [root @ localhost sbin] #
-g
bedeutet, die Details in GB anzuzeigen. Wie Sie sehen können, beträgt der insgesamt verfügbare Speicher 5 GB und 3 GB sind kostenlos.
sar
sar (Systemaktivitätsbericht) ist hilfreich, um eine Reihe von Berichten zu erfassen, einschließlich CPU, Speicher und Gerätelast.
Durch einfaches Ausführen sar
Der Befehl zeigt Ihnen die Systemauslastung für den gesamten Tag.
Standardmäßig wird der Nutzungsbericht in 10 Minuten gespeichert. Wenn Sie in Echtzeit etwas kürzeres benötigen, können Sie es wie folgt verwenden.
Zeigen Sie den CPU-Bericht dreimal alle 3 Sekunden an
[root @ localhost sbin] # sar 3 2 Linux 3.10.0-327.13.1.el7.x86_64 (localhost.localdomain) 08 _x13_2016_ (86 CPU) 64:2:11 CPU% user% nice% system % iowait% stehlen% Leerlauf 14:02:11 alle 14 05 1.83 0.00 0.50 0.17 0.00:97.51:11 alle 14 08 1.50 0.00 0.17 0.00 Durchschnitt: alle 0.00 98.33 1.67 0.00 0.33 0.08 [root @ localhost sbin] #
Bericht zur Speichernutzung anzeigen
#sar –r
Netzwerkbericht anzeigen
#sar –n ALLE
ipcs
ips (InterProcess-Kommunikationssystem) bietet einen Bericht über das Semaphor, den gemeinsam genutzten Speicher und die Nachrichtenwarteschlange.
So listen Sie die Nachrichtenwarteschlange auf
# ips –q
Auflisten der Semaphoren
# ips –s
So listen Sie den gemeinsam genutzten Speicher auf
# ips –m
Anzeigen des aktuellen Nutzungsstatus von IPC
[root @ localhost sbin] # ipcs -u ------ Nachrichtenstatus -------- zugewiesene Warteschlangen = 0 verwendete Header = 0 verwendeter Speicherplatz = 0 Bytes ------ Status des gemeinsam genutzten Speichers - ------ Segmente zugewiesen 5 Seiten zugewiesen 2784 Seiten resident 359 Seiten getauscht 0 Swap-Leistung: 0 Versuche 0 Erfolge ------ Semaphorstatus -------- verwendete Arrays = 0 zugewiesene Semaphore = 0 [ root @ localhost sbin] #
ioping
ioping ist ein externer Befehl, über den Sie ihn installieren können hier. Es kann sehr praktisch sein, die E / A-Latenz der Festplatte in Echtzeit zu überwachen.
Fazit
Ich hoffe die oben genannten Befehle helfen in den verschiedenen Situationen bei Ihnen Systemadministration Job. Die oben genannten Befehle können bei Bedarf verwendet werden. Wenn Sie jedoch ständig Linux-Server überwachen müssen, sollten Sie die Verwendung in Betracht ziehen Server-Überwachungssoftware.
Weitere Informationen zur Linux-Leistung finden Sie hier Udemy natürlich.