点击上方 "朱小厮的博客", 选择 "置顶公众号"
技术文章第一时间送达!
当性能出现问题时, 可以通过 Linux 操作系统的命令获取性能信息. 本节会介绍一些常用的 Linux 的性能监控命令.
top 命令 - 监控进程状态
这个命令适合用来实时掌握操作系统的整体情况, 且能够实时反映出系统各个进程的资源的占用情况, 类似于 Windows 的任务管理器. 使用 top 命令可以显示进程信息.
# top
图中, 上半部分显示操作系统的各种信息, 包括 CPU 使用情况, 内存使用情况, 进程执行情况等. 下半部分显示了活动比较频繁的进程, 可以在这些进程中排查问题的端倪. 确定可疑的进程后, 可以指定相关进程, 并设置信息更新时间, 显示完整命令. 下面来看一个例子, 其中, 指定显示进程 9836, 每隔 5 秒的进程的资源的占用情况.
# top -d 5 -p 9836 -c
ps 命令 - 查看当前进程
这个命令适合用来查看某个瞬间存在哪些进程, 这些进程的信息和状态等. 通过 ps 命令, 可以判断当前进程的状态, 从而找出问题的原因. 使用 ps 命令可以显示系统中当前所有的进程.
# ps -ef
同时, 也可以指定查看相关的进程. 下面来看一个例子, 其中, 查看所有 java 进程.
# ps -ef | grep java
netstat 命令 - 查看网络连接情况
这个命令可以知道 Linux 系统的网络情况, 适合用来查看网络连接信息. 其中, 可以查看当前的所有连接.
# netstat -a
此外, 可以监听 TCP 的连接.
# netstat -atl
甚至可以统计端口的当前连接数. 下面来看一个例子, 其中, 查看 10090 端口的当前连接数.
# netstat -an | grep 10090 | wc -l
这个命令适合用来监控系统设备的 IO 负载情况, 对系统的磁盘操作活动进行监控. iostat 首次运行时, 显示系统启动开始的各项统计信息, 之后运行 iostat 将显示自上次运行该命令以后的统计信息. 用户可以通过指定统计的次数和时间来获得所需的统计信息. 下面来看一个例子, 其中, 每秒采样一次, 连续 5 次, 观察磁盘 IO 的使用情况.
# iostat -k 1 5
sar 命令 - 性能监控
这个命令适合用来监控 CPU 的使用率和空闲情况, 以及磁盘 I/O 的使用情况, 网卡流量的使用情况等. 监控 CPU 的情况, 可以使用 -u 参数, 输出 CPU 使用情况的统计信息. 下面来看一个例子, 其中, 每秒采样一次, 连续 10 次, 观察 CPU 的使用情况.
# sar -u 1 10
值得注意的是, 如果 %user + %sys 超过 85%, 进程可能要花时间在运行队列中等待, 因此响应时间和吞吐量会受影响. 但是, 使用率 100% 不一定意味着 CPU 就是性能瓶颈, 此时可以进一步查看 vmstat 命令中的 r 值是否超出服务器的 CPU 数量. 此外,%system 比较大, 说明系统管理方面花了很多时间. 需要进一步的分析其它软硬件因素. 监控磁盘 I/O 的情况, 可以使用 -d 参数, 输出每个块设备的活动信息. 下面来看一个例子, 其中, 每秒采样一次, 连续 10 次, 观察磁盘 I/O 的使用情况. 其中,-p 参数可以打印出磁盘的设备名称.
# sar -pd 1 10
如果 %util 接近 100%, 可能由于产生的 I/O 请求太多, I/O 系统已经满负荷, 因此磁盘存在瓶颈. 此外, 如果 %await 远大于 %svctm, 可能是因为磁盘 I/O 队列太长, 导致响应时间变慢.
vmstat 命令 - 虚拟内存监控
这个命令适合用来监控 CPU 使用率, 内存使用, 虚拟内存交换情况, IO 读写情况等. 下面来看一个例子, 其中, 每秒采样一次, 连续 5 次, 观察虚拟内存的使用情况.
# vmstat 1 5
其中, 第一行显示是 Linux 操作系统启动后的平均值, 所以一般看第二行后面的值.
其中, 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 信息.
来源: https://juejin.im/entry/5bc946edf265da0ae74fb406