Linux 性能监控
Linux 性能监控
监控cpu使用情况,命令uptime执行后显示系统运行时间,以及负载 ,负载分别显示的是最近一分钟,5分钟,15分钟的负载情况,负载表示的是单位时间内cpu活动进程数,这个值越大代表服务器压力越大,一般情况下这个值只要不超过服务器的cpu数量就没有关系,如果服务器cpu数量为8,那么这个值若小于8,就说明当前服务器没有压力,否则就要关注一下了。
W命令显示信息更为详细

‘/proc/cpuinfo’ 这个文件记录了cpu的详细信息。我们可以使用这个命令: grep -c 'processor' /proc/cpuinfo 查看由几个处理器,而如何看几颗物理cpu呢,需要查看关键字 “physical id”, 即grep -c 'physicalid' /proc/cpuinfo

w命令查看的是系统整体上的负载,通过看哪个数值可以知道当前系统有没有压力,但是具体是哪里(cpu,内存,磁盘等)有压力就无法判断了。通过vmstat就可以知道具体哪里有压力。vmstat命令打印的结果共分为6部分:procs,memory,swap,io,system,cpu。重点关注r b si so bi bo几列。
procs 显示进程相关信息
r表示运行和等待cpu时间片的进程数,如果长期大于服务器cpu的个数,则说明cpu不够用了。
b表示等待资源的进程数,比如等待i/0,内存等,这列值如果长时间大于1,则需要关注。
memory 内存相关信息
swpd :表示切换到交换分区中的内存数量 ;
free :当前空闲的内存数量;
buff :缓冲大小,(即将写入磁盘的);
cache :缓存大小,(从磁盘中读取的);
3)swap 内存交换情况
si :由交换区写入到内存的数据量;
so :由内存写入到交换区的数据量;
4)io 磁盘使用情况
bi :从块设备读取数据的量(读磁盘);
bo: 从块设备写入数据的量(写磁盘);
5)system 显示采集间隔内发生的中断次数
in :表示在某一时间间隔中观测到的每秒设备中断数;
cs :表示每秒产生的上下文切换次数;
6)CPU 显示cpu的使用状态
us :显示了用户下所花费 cpu 时间的百分比;
sy :显示系统花费cpu时间百分比;
id :表示cpu处于空闲状态的时间百分比;
wa :表示I/O等待所占用cpu时间百分比;
st :表示被偷走的cpu所占百分比(一般都为0,不用关注);
经常关注r列,b列,和wa列,三列代表的含义在上边说得已经很清楚。IO部分的bi以及bo也是要经常参考的对象。如果磁盘io压力很大时,这两列的数值会比较高。另外当si, so两列的数值比较高,并且在不断变化时,说明内存不够了,内存中的数据频繁交换到交换分区中,这往往对系统性能影响极大。
我们使用 vmstat 查看系统状态的时候,通常都是使用这样的形式来看的:

前面表示,每隔一秒钟打印一次状态,共打印5次,而后面的表示每隔1秒打印一次状态,一直打印,除非我们按 Ctrl + c 结束
监控内容和交换分区使用情况--free命令
free -b|-k|-m 输入容量的单位 Byte,KB, MB

第一行 used 大小为 系统划分给buffers cached 的容量
监控磁盘的使用情况 df命令
df -h 显示容量信息
-i 显示磁盘的inode使用量信息
-T 显示文件系统类型
inode决定该分区可以创建的文件个数,有多少个inode节点,就可以在该分区创建多少个文件。如果inode个数达到极限,即使有剩余磁盘空间也无法再创建文件。
监控网络使用情况
ifconfig
netstat 打印网络连接,路由表,网络接口信息等
netstat -s 显示各种协议数据统计信息
netstat -n 使用数字形式的ip,端口号,用户ID替代主机,协议,用户等名称信息
-p 显示进程名称及对应进程ID号
-l 仅显示正在监听的socket接口的信息
-u 查看udp连接信息
-t 查看tcp连接信息

监控进程使用情况
ps -e 查看所有的进程信息
ps -ef 全格式显示进程信息
或
ps -ax
ps -aux
[root@centos ~]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 05:52 ? 00:00:01 /sbin/init
root 2 0 0 05:52 ? 00:00:00 [kthreadd]
root 3 2 0 05:52 ? 00:00:00 [migration/0]
root 4 2 0 05:52 ? 00:00:00 [ksoftirqd/0]
root 5 2 0 05:52 ? 00:00:00 [migration/0]
root 6 2 0 05:52 ? 00:00:00 [watchdog/0]
root 7 2 0 05:52 ? 00:00:00 [migration/1]
root 8 2 0 05:52 ? 00:00:00 [migration/1]
[root@centos ~]# ps -axu
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 19364 1536 ? Ss 05:52 0:01 /sbin/init
root 2 0.0 0.0 0 0 ? S 05:52 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 05:52 0:00 [migration/0]
root 4 0.0 0.0 0 0 ? S 05:52 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S 05:52 0:00 [migration/0]
root 6 0.0 0.0 0 0 ? S 05:52 0:00 [watchdog/0]
root 7 0.0 0.0 0 0 ? S 05:52 0:00 [migration/1]
root 8 0.0 0.0 0 0 ? S 05:52 0:00 [migration/1]
root 9 0.0 0.0 0 0 ? S 05:52 0:00 [ksoftirqd/1]
root 10 0.0 0.0 0 0 ? S 05:52 0:00 [watchdog/1]
能显示执行进程的uid或user,pid为进程为一编号,ppid为父进程编号,%cpu为进程cpu占用率,%mem为进程内存占用率,vsz为进程虚拟内存占有率,RSS为真实内存占有率,tty为终端,start或stime为进程启动时间, stat为进程状态, command 代表进程命令
top 动态查看进程信息
-d top刷新间隔,默认为3秒
-p 查看你指定pid的进程信息
命令的特点是把占用系统资源(CPU,内存,磁盘IO等)最高的进程放到最前面。top命令打印出了很多信息,包括系统负载(loadaverage)、进程数(Tasks)、cpu使用情况、内存使用情况以及交换分区使用情况。其实上面这些内容可以通过其他命令来查看,所以用top重点查看的还是下面的进程使用系统资源详细状况。这部分东西反映的东西还是比较多的,不过需要您关注的也就是几项:%CPU, %MEM, COMMAND 这些项目所代表的意义,RES 这一项为进程所占内存大小,而 %MEM 为使用内存百分比。在 top 状态下,按 “shift + m”, 可以按照内存使用大小排序。按数字 ‘1’ 可以列出各颗cpu的使用状态。
top 可以动态查看10个进程的信息,默认按cpu使用率排序,输入M可以按照内存排序,输入N可以按进程号排序,输入z可以高亮显示颜色。
top -d 1 -p 1.2 查看编号为1和2的进程信息

非动态打印系统资源使用情况


浙公网安备 33010602011771号