本文概述
在IT领域中, 与性能故障排除相关的问题始终具有挑战性, 如果你不了解正确的工具, 那将很令人沮丧。
如果你在生产环境中作为支持工作, 那么很可能需要处理Linux环境中与性能相关的问题。
你是否正在支持功能并正在Linux服务器上工作?
让我们看一下一些最常用的Linux命令行实用工具, 以诊断与性能相关的问题。
注意:默认情况下, 可能不会默认安装以下列出的某些命令, 因此你必须手动安装它们。
lsof
lsof代表”列出打开的文件”, 以帮助你查找所有打开的文件和进程以及打开它们的人。在某些情况下, lsof实用程序可以方便使用。
要列出, 所有由特定PID打开的文件
# lsof –p PID
计算文件和进程数
[[email protected] ~]# lsof -p 4271 | wc -l
34
[[email protected] ~]#
检查当前打开的日志文件
# lsof –p | grep log
找出守护程序使用的端口号
[[email protected] ~]# lsof -i -P |grep 4271
nginx 4271 root 6u IPv4 51306 0t0 TCP *:80 (LISTEN)
nginx 4271 root 7u IPv4 51307 0t0 TCP *:443 (LISTEN)
[[email protected] ~]#
pidstat
pidstat可用于监视Linux内核管理的任务。使用此命令可以轻松解决与I / O相关的问题。
列出所有PID的I / O统计信息
# pidstat –d
替换特定PID的I / O统计信息
# pidstat –p 4271 –d
如果你要对某些过程进行实时故障排除, 则可以隔一段时间监视I / O。下面的示例是每5秒监视一次。
[[email protected] ~]# pidstat -p 4362 -d 5
Linux 3.10.0-327.13.1.el7.x86_64 (localhost.localdomain) 08/13/2016 _x86_64_ (2 CPU)
07:01:30 PM UID PID kB_rd/s kB_wr/s kB_ccwr/s Command
07:01:35 PM 0 4362 0.00 0.00 0.00 nginx
07:01:40 PM 0 4362 0.00 0.00 0.00 nginx
07:01:45 PM 0 4362 0.00 0.00 0.00 nginx
07:01:50 PM 0 4362 0.00 0.00 0.00 nginx
top
Linux上最常用的命令之一可能就是top。 top命令可用于显示系统摘要信息和当前利用率。
只需执行top命令, 即可显示CPU利用率, 进程详细信息, 许多任务, 内存利用率, 大量僵尸进程等。
显示特定用户的流程详细信息
# top –u username
要终止该进程, 可以执行top并按k。它将提示你输入要杀死的PID。
ps
ps代表进程状态, 并广泛用于命令以获取正在运行的进程的快照。找出进程是否正在运行以及是否正在运行然后显示PID很有用。
通过单词找出PID和处理细节
# ps –ef |grep word
tcpdump
解决网络问题始终具有挑战性, 并且要使用的基本命令之一是tcpdump。
你可以使用tcpdump捕获网络接口上的网络数据包。
捕获特定网络接口上的数据包
# tcpdump –i $interface –w /tmp/capture
如你所见, 已在” eno16777736″界面上捕获了流量。
捕获源IP与目标IP之间的网络流量
# tcpdump src $IP and dst host $IP
捕获目标端口443的网络流量
# tcpdump dst port 443
tcpdump: data link type PKTAP
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on pktap, link-type PKTAP (Packet Tap), capture size 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, length 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], length 0
12:02:32.090389 IP 192.168.1.2.49953 > 104.25.133.107.https: Flags [.], ack 790725431, win 8192, length 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
读取捕获的文件
# tcpdump –r filename
例如:读取上面捕获的文件
# tcpdump –r /tmp/test
iostat
iostat代表输入输出统计信息, 通常用于诊断存储设备的性能问题。你可以使用iostat监视CPU, 设备和网络文件系统利用率报告。
显示磁盘I / O统计信息
[[email protected] ~]# iostat -d
Linux 3.10.0-327.13.1.el7.x86_64 (localhost.localdomain) 08/13/2016 _x86_64_ (2 CPU)
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 1.82 55.81 12.63 687405 155546
[[email protected] ~]#
显示CPU统计信息
[[email protected] ~]# iostat -c
Linux 3.10.0-327.13.1.el7.x86_64 (localhost.localdomain) 08/13/2016 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.59 0.02 0.33 0.54 0.00 98.52
[[email protected] ~]#
dd
ldd代表列表动态依赖项, 以显示库所需的共享库。 ldd命令可以方便地诊断应用程序启动问题。
如果某些程序由于不可用的依赖项而无法启动, 那么你可以查找所需的共享库。
[[email protected] 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 => /lib64/libc.so.6 (0x00007fa4d2e9e000)
liblzma.so.5 => /lib64/liblzma.so.5 (0x00007fa4d2c79000)
/lib64/ld-linux-x86-64.so.2 (0x00007fa4d4a10000)
libuuid.so.1 => /lib64/libuuid.so.1 (0x00007fa4d2a73000)
libfreebl3.so => /lib64/libfreebl3.so (0x00007fa4d2870000)
[[email protected] sbin]#
netstat
netstat(网络统计信息)是一种流行的命令, 用于打印网络连接, 接口统计信息并解决各种与网络相关的问题。
显示所有协议的统计信息
# netstat –s
你可以使用grep查找是否有任何错误
[[email protected] sbin]# netstat -s | grep error
0 packet receive errors
0 receive buffer errors
0 send buffer errors
[[email protected] sbin]#
显示内核路由表
[[email protected] sbin]# netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
default gateway 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 U 0 0 0 virbr0
[[email protected] sbin]#
free
如果你的Linux服务器内存不足, 或者只想从可用内存中找出多少可用内存, 那么free命令将为你提供帮助。
[[email protected] sbin]# free -g
total used free shared buff/cache available
Mem: 5 0 3 0 1 4
Swap: 5 0 5
[[email protected] sbin]#
-g表示以GB显示详细信息。因此, 你可以看到总可用内存为5 GB, 而3 GB是可用的。
sar
sar(系统活动报告)将有助于收集许多报告, 包括CPU, 内存和设备负载。
通过仅执行sar命令, 将显示整天的系统利用率。
默认情况下, 它将在10分钟内存储利用率报告。如果你需要实时缩短时间, 可以使用以下方法。
每3秒显示3次CPU报告
[[email protected] sbin]# sar 3 2
Linux 3.10.0-327.13.1.el7.x86_64 (localhost.localdomain) 08/13/2016 _x86_64_ (2 CPU)
11:14:02 PM CPU %user %nice %system %iowait %steal %idle
11:14:05 PM all 1.83 0.00 0.50 0.17 0.00 97.51
11:14:08 PM all 1.50 0.00 0.17 0.00 0.00 98.33
Average: all 1.67 0.00 0.33 0.08 0.00 97.92
[[email protected] sbin]#
显示内存使用情况报告
# sar –r
显示网络报告
# sar –n ALL
ipcs
ipcs(进程间通信系统)提供有关信号量, 共享内存和消息队列的报告。
列出消息队列
# ipcs –q
列出信号量
# ipcs –s
列出共享内存
# ipcs –m
显示IPC的当前使用状态
[[email protected] sbin]# ipcs -u
------ Messages Status --------
allocated queues = 0
used headers = 0
used space = 0 bytes
------ Shared Memory Status --------
segments allocated 5
pages allocated 2784
pages resident 359
pages swapped 0
Swap performance: 0 attempts 0 successes
------ Semaphore Status --------
used arrays = 0
allocated semaphores = 0
[[email protected] sbin]#
我希望以上命令可以在系统管理工作中的各种情况下提供帮助。
这些只是为了让你对命令有所了解, 如果有兴趣, 可以查看此Linux性能监视和故障排除课程。
评论前必须登录!
注册