50

常用性能监控指南

 6 years ago
source link: http://blog.720ui.com/2018/linux_performance_command/?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
rYBBvya.png!web

当性能出现问题时,可以通过 Linux 操作系统的命令获取性能信息。本节会介绍一些常用的 Linux 的性能监控命令。

top 命令 – 监控进程状态

这个命令适合用来实时掌握操作系统的整体情况,且能够实时反映出系统各个进程的资源的占用情况,类似于 windows 的任务管理器。使用 top 命令可以显示进程信息。

# top

2I3IFjb.png!web

图中,上半部分显示操作系统的各种信息,包括 CPU 使用情况、内存使用情况、进程执行情况等。下半部分显示了活动比较频繁的进程,可以在这些进程中排查问题的端倪。确定可疑的进程后,可以指定相关进程,并设置信息更新时间,显示完整命令。下面来看一个例子,其中,指定显示进程 9836,每隔 5 秒的进程的资源的占用情况。

# top –d 5 –p 9836 -c

ps 命令 – 查看当前进程

这个命令适合用来查看某个瞬间存在哪些进程,这些进程的信息和状态等。通过 ps 命令,可以判断当前进程的状态,从而找出问题的原因。使用 ps 命令可以显示系统中当前所有的进程。

# ps -ef

同时,也可以指定查看相关的进程。下面来看一个例子,其中,查看所有 java 进程。

# ps –ef | grep java

muMjI3V.png!web

netstat 命令 – 查看网络连接情况

这个命令可以知道 Linux 系统的网络情况,适合用来查看网络连接信息。其中,可以查看当前的所有连接。

# netstat -a

此外,可以监听 TCP 的连接。

# netstat –atl

naIVRv2.png!web

甚至可以统计端口的当前连接数。下面来看一个例子,其中,查看 10090 端口的当前连接数。

# netstat -an | grep 10090 | wc -l

这个命令适合用来监控系统设备的 IO 负载情况,对系统的磁盘操作活动进行监控。iostat 首次运行时,显示系统启动开始的各项统计信息,之后运行 iostat 将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。下面来看一个例子,其中,每秒采样一次,连续 5 次,观察磁盘 IO 的使用情况。

# iostat –k 1 5

f6bYRni.png!web

sar 命令 – 性能监控

这个命令适合用来监控 CPU 的使用率和空闲情况,以及磁盘 I/O 的使用情况、网卡流量的使用情况等。监控 CPU 的情况,可以使用 –u 参数,输出 CPU 使用情况的统计信息。下面来看一个例子,其中,每秒采样一次,连续 10 次,观察 CPU 的使用情况。

# sar –u 1 10

zqyqu22.png!web

值得注意的是,如果 %user + %sys 超过 85%,进程可能要花时间在运行队列中等待,因此响应时间和吞吐量会受影响。但是,使用率 100% 不一定意味着 CPU 就是性能瓶颈,此时可以进一步查看 vmstat 命令中的 r 值是否超出服务器的 CPU 数量。此外,%system 比较大,说明系统管理方面花了很多时间。需要进一步的分析其它软硬件因素。监控磁盘 I/O 的情况,可以使用 –d 参数,输出每个块设备的活动信息。下面来看一个例子,其中,每秒采样一次,连续 10 次,观察磁盘 I/O 的使用情况。其中,-p 参数可以打印出磁盘的设备名称。

# sar –pd 1 10

fMN7zeJ.png!web

如果 %util 接近100%,可能由于产生的 I/O 请求太多,I/O 系统已经满负荷,因此磁盘存在瓶颈。此外,如果 %await 远大于 %svctm,可能是因为磁盘 I/O 队列太长,导致响应时间变慢。

vmstat 命令 – 虚拟内存监控

这个命令适合用来监控 CPU 使用率,内存使用,虚拟内存交换情况,IO读写情况等。下面来看一个例子,其中,每秒采样一次,连续 5 次,观察虚拟内存的使用情况。

# vmstat 1 5

uqiMNrz.png!web

其中,第一行显示是 Linux 操作系统启动后的平均值,所以一般看第二行后面的值。

iMRNBbM.png!web

其中,swpd、 si、 so 三个指标的值比较高,很可能是内存不足。如果 cache 使用率非常低,而 swap 的 si 或 so 有比较高的数据值时,应该警惕内存的性能问题。此外,注意的是,当内存严重不足时,系统会频繁使用调页和交换,这增加了磁盘 I/O 的负载,进一步降低了系统对作业的执行速度,即系统 I/O 资源问题又会影响到内存资源的分配。

nmon 命令 – 性能监控

nmon 可以在一个屏幕上显示所有重要的性能信息,包括 CPU 信息、内存信息、网络信息、磁盘 I/O 信息等,并动态地对其进行更新。可通过 IBM 官网上免费下载获取或者通过 yum 命令直接安装。这里,使用 wget 方式进行下载与安装。

# wget http://sourceforge.net/projects/nmon/files/nmon_linux_14i.tar.gz
# tar zxvf nmon_linux_14i.tar.gz
# chmod 777 nmon_x86_64_sles11

至此,安装完成。通过下面命令进行启动。

# ./nmon_x86_64_sles11

在运行界面上,输入 C 显示CPU信息,输入 M 显示内存信息,输入 N 显示网络信息,输入 D 显示硬盘 I/O 信息。

aMnUbif.png!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK