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的进程信息

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

 

 

 

 

 

 

 

 

 

 

 

 

 

     

posted @ 2014-03-10 23:33  DylanLee  阅读(182)  评论(0)    收藏  举报