个性化阅读
专注于IT技术分析

系统管理员必须了解的11个Linux性能命令

本文概述

在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
ps输出

tcpdump

解决网络问题始终具有挑战性, 并且要使用的基本命令之一是tcpdump。

你可以使用tcpdump捕获网络接口上的网络数据包。

捕获特定网络接口上的数据包

# tcpdump –i $interface –w /tmp/capture
tcpdump输出

如你所见, 已在” 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命令, 将显示整天的系统利用率。

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性能监视和故障排除课程。

赞(0)
未经允许不得转载:srcmini » 系统管理员必须了解的11个Linux性能命令

评论 抢沙发

评论前必须登录!