系统监控这东西,我觉得运维看看还不错,大数据不需要做太多的深入研究,但是因为这是介绍Linux的文章,所以什么都要说一下。当然这里演示的部分相对以前较少,因为一个命令就可以查出来一大堆东西,主要就是介绍这堆东西有什么,都是什么意思,所以文字相对较多。
首先,我们介绍下进程的状态,运行(正在运行或在运行队列中等待)
中断(休眠中,受阻,在等待某个条件的形成或接受到的信号)
不可中断(收到信号不唤醒和不可运行,进程必须等待直到有中断发生)
僵死(进程已终止,但进程描述符存在,直到父进程调用wait4()系统调用后释放)
停止(进程受到SIGSTOP,SIGSTP,SIGTIN,SIGTOU信号停后停止运行)
之后我们使用ps工具来管理进程:ps工具同样标识了进程的5种状态:D:不可中断,R:运行,S:中断,T:停止,Z:僵死
——————————————————
ps aux查看到的信息,分别是:user:进程拥有者,PID:pid标识,%CPU:占用的CPU使用率,%MEM:占用的记忆体使用率,VSZ:占用的虚拟记忆体大小,RSS:占用的记忆体大小,TTY:中断的次要装置号码,STAT:该行程的状态(D:不可中断的静止,R:正在执行中,S:静止状态,T:暂停执行,Z:不存在但暂时无法消除,W:没有足够的记忆体分页可分配,<:高优先顺序的进程,N:低优先顺序的行程,L:有机一体分页分配并锁在记忆体内(即时系统)),START:行程开始时间,TIME:执行的时间,COMMAND:所执行的指令。
当然ps还有很多指令选项,不过对于我们来说aux足够了。接下来我们说下top命令。top是Linux下常用的新能分析工具,类似ps命令,top可以实时的显示系统中各个进程的资源占用情况,就和windows里的资源管理器类似。
——————————————————
第一行是任务队列的信息,分别为当前时间,系统运行时间,当前登录用户数,系统负载;
第二行三行是cpu的信息和行为进程的信息,当有多个cpu,可能会有很多行,分别是总进程数,正在运行的进程数,睡眠进程数,停止的进程数,僵尸进程数,用户空间占cpu的百分比,内核空间占cpu的百分比,用户进程空间内改变过优先级的进程占用的百分比,等待输入输出的cpu时间百分比;
最后两行为内存信息,分别为Mem:内存物力总量,used:使用的物理内存总量,free:空间内存总量,buffers:用作内核缓存的内存量,swap:交换区总量,used:使用的交换区总量,free:空闲交换区的总量,cached:缓冲的交换区总量;
之后的进程信息分别为,PID:进程id,USER:进程所有者用户名,PR:优先级,NI:nice值(正负表示优先级,负值为高),VIRT:进程使用的虚拟内存总量,RES:进程使用未被换出的物理内存大小,SHR:共享内存大小,S:进程状态,%CPU为上次更新到现在CPU时间占用百分比,%MEM进程使用的物理内存百分比,TIME+:进程使用的CPU时间总计,COMMAND:命令名。
真的是超级多的信息,之后我们来说下一个sar系统活动情况报告,我们需要安装一个sysstat-7.0.2-3.el5.i386.rpm,这东西依然是yum源安装,当然不同版本可能不一样,直接挂载红帽5的镜像用yum -y install就行。安装很简单这就不重复演示了,安装完成后我们来举个例子使用这东西。
比如CPU资源监控,每十秒采样一次,连续采样三次,观察CPU的使用情况,并将结果以二进制的形式存入桌面下的test文件中。
——————————————————
废了这么半天劲,分析了半天具体干啥也不清楚,就看这些数啥用没有,那我们看看都怎么分析,如果iowait的值过高,表示硬盘存在I/O瓶颈;如果%idle的值高但是系统响应慢,有可能是CPU等待分配内存,这时候就应该加大内存容量;如果%idle的值持续低于1,则系统CPU的处理能力较低,表明需要解决的资源问题是CPU。
再来看下一个例子,内存和交换空间监控,每十秒采样一次,连续采样三次,监控内存分页。
——————————————————
继续继续,内存分页监控,每十秒采样一次,连续采样三次,监控内存分页。
——————————————————
下一个I/O和传送速率监控,每十秒采样以此,连续采样三次,报告缓冲区的情况。
——————————————————
需要判断系统瓶颈的时候,有时需要好几个sar命令结合,比如怀疑CPU存在瓶颈,使用sar -u和sar -q等查看;怀疑内存瓶颈,使用sar -B、sar -r和sar -W;怀疑I/O存在瓶颈使用sar -b、sar -u和sar -d等查看。
下一个介绍的是vmstat工具,据说这是最常见的监控工具,和之前的sar命令类似(不知道大家看没看出来格式),有两个参数,第一个是时间间隔,第二个是采样次数。
——————————————————
其中r表示运行队列(就是说有多少个进程真的分配到了cpu),这个值超过cpu数目就说明出现了cpu瓶颈,一般超过3个就比较高了,5个就很高冷,10个就不正常了,对于服务器很危险;b表示阻塞的进程个数;swpd:虚拟内存使用的大小,如果大于0则表示物理内存不足了;free:空闲内存的大小;buff:存储目录内容以及权限的缓存;cache:用来给打开过的文件作欢村,提高执行性能;si:每秒从磁盘读入虚拟内存的大小,如果大于零则表示物理内存不足或者内存泄漏了;so:每秒虚拟内存写入磁盘的大小,大于零和si一样的情况;bi:块设备每秒接收的块数量;bo:块设备每秒发送的块数量,一般bi和bo都要接近于0;in:每秒cpu的中断次数,包括时间中断;cs:每秒上下文切换次数(大概就是调用系统函数以及线程切换都需要调用);us:用户cpu时间;sy:系统的cpu时间,如果太高则表示调用时间长,比如io操作频繁;id:空闲cpu时间,一般来说id+us+sy=100;wt:等待io的cpu时间。
iostat:I/O相关的统计信息,用来显示cpu和I/O系统的负载情况及区分状态信息
——————————————————
avg-cpu段:
%user:在用户级别运行所使用的CPU百分比
%nice:nice操作所使用的CPU百分比
%sys:在系统级别(kernel)运行所使用的CPU的百分比
%iowait:CPU等待硬件I/O时,所占用的CPU百分比
%idle:CPU空闲时间的百分比
Device段:
tps:每秒钟发送到I/O的请求数
Blk_read /s:每秒读取的block数
Blk_wrtn/s:每秒写入的block数
Blk_read:读入的block总数
Blk_wrtn:写入的block总数
当然lostat也可以在后面写参数比如:lostat -d 2:每隔两秒,显示一次设备统计信息;lostat -d 2 6:每隔两秒,先试一次设备统计信息,一共输出六次;iostat -x hda hdb 2 6:每隔两秒先试一次hda,hdb两个设备的扩展统计信息,共输出六次;iostat -p sda 2 6:每隔两秒显示一次sda以及上面所有的分区的统计信息,共输出六次。
lsof是用来查看当前系统打开文件的工具,常用的参数有:filename:显示打开指定文件的所有信息;-a:表示两个参数都必须满足时才显示的结果;-c+string:显示command列中包含指定字符的进程所有打开的文件;-u+username:显示所述user进程打开的文件;-g+gid:显示归属gid的进程情况;+d /DIR/:显示目录下被进程打开的文件;+D /DIR/:同上,但是会搜索目录下所有目录,相对时间较长;-d+FD:显示指定文件所描述的进程;-n:不将ip转换为hostname,缺省值;-i:用以显示符合条件的进程情况。下面举几个例子看看如何使用:
查看22端口现在的运行情况
——————————————————
查看所属root用户进程所打开的文件类型为txt的文件
——————————————————
查找哪个用户在使用文件系统,无法卸载文件系统时使用,用于找出使用文件系统的进程
——————————————————
Linux还有很多知识点,当然还包括shell脚本,这东西有点复杂,因为涉及到了编程的知识,于是乎,我决定写完java之后找时间再写。那么Linux就到这里了,接下来就是Java基础