linux常用命令系列-第2弹

有了前面第一弹的发射之后,说好的第2弹如期而至。这一期的命令主要是和系统监控、性能分析相关。熟练使用本章命令,基本可以实现快速定位问题。和排查系统瓶颈点,是调优的辅助工具。
【w和uptime】


13:06:43 表示当前时间
up :表示在启用
1:52 :表示当前终端登陆的时间
3 users: 表示在线的用户个数
load average: 0.00, 0.00, 0.00 表示负载
下面的一排,表示那个用户从那个终端,使用那个IP什么时间登陆的,执行了什么操作。
IDLE :表示空闲时间
JCPU:表示使用CPU的时间
重点查看的是load average
load average平均负载的概念:
load average: 0.00, 0.00, 0.00
这里面的第一个数字表示每一分钟,需要处理的总进程数,第二个数字表示单位5分钟需要处理的总进程数。第三个数字表示单位15分钟需要处理的总进程数
这个值的大小和意义还是和这个CPU的核心有关系的。如果是两颗CPU,那么第一个数字如果是4.9那个当前的单位一分钟的平均负载就是4.9/2。其实,只要是这个平均负载是大于>1,那么就是说明超负载运行了。
意义:当前的平均负载,如果最终计算的结果如果大于1,表示CPU的处理是跟不上进程的,1在理论上是理想状态。但是实际上这个值如果小一些,对于服务器的寿命是有好处的。
linux常用命令之W
【服务器CPU的颗和核的区别及查看】
首先是查看CPU的命令是: cat /proc/cpuinfo
这里面需要了解的参数主要有:查看有多少颗CPU和多少核的CPU;几颗CPU就是有多少个物理CPU和几核是一个物理CPU是有多少的核心数。
核心数的查看方式; cat /proc/cpuinfo 查看processor,


physical id #这是查看几颗CPU的,0就表示是1颗。
那么总共的核心数就是:颗数*核数
linux服务器查看核心数
注意:这里命令执行的结果就是,第一颗内核有八核,第二颗内核也是八核。


【vmstat】
系统的常用的命令使用:如图
用法介绍:及各列参数的含义:


r:等待CPU时间片的进程数(或者说是活动进程数),如果长期大于CPU的个数,说明CPU的个数不够用,该进程是CPU密集型。我们要针对该类服务增加CPU。
b:表示等待资源的进程数,该进程有可能是等待IO读写,内存的刷写等。这一列的数据如果长时间大于1,需要重点关注了磁盘。
注意:swap是以swap为中心的描述,IO都是表示写入和读出swap,io是以磁盘为中心的描述,i和o都是描述的写入和读出磁盘。
Si:表示从交换分区进入内存的数量;
So:表示从内存到交换分区的数量;
bi:表示从块设备中读取数据的量。(读磁盘)
bo;表示对块设备写入数据的量。(写磁盘)
wa:如果wa不超过5%,就没有什么问题。如果这个数字大,说明磁盘有可能堵塞,读写有瓶颈。处理的方式,加一层缓存,降低这个直接读写磁盘的问题。比如memcached 2,做raid的方式,来解决读写的问题。3,以及现在新的技术把内存当做磁盘来存储。
vmstat命令使用详解
【专用于查看IO性能的工具】

下面这个图是MySQL服务器的,数据读写的图:
最上面一排是总的读量,和总的写量。
iostat工具
【sar命令的使用】

这里面说明下sar这个命令是是通过读取以前的命令的方式,来查看数据的。如果第一次装这个包就会出现“没有这个文件报错”。文件保存到的位置是/var/log/sar
sar:我最常用的用法是查看网卡流量:
一次性查看网卡流量:sar -n DEV
查看以前的某一天的网卡流量。sar的命令好处就是把网卡流量信息会自动保存在/var/log.sa/*
sar实战用法
用sar计算最大带宽的方法:
通过流量最大值计算带宽,我们的使用的是。识别几个词汇的意思:rxpck/s表示每秒发送的包的数量。Txpck/表示每秒钟接受的包的数量。Rxbyt/s表示每秒发送的流量;txbyt/s表示每秒接受的流量。这里面的单位都是字节。因此与外面的网卡流量是有区别的。我们日常说的流量是,以bit为单位的,通常1M宽带是实际上也就是1000个bit.但是我们这里面的单位是byt。因此换算成M的化,还需1970726*8.也就是我们应该选择的的最大带宽了。
服务器被攻击查看
RXPCK和rxbyt查看大小,如果是几万,那么说明被攻击了。

【你真的会用free查看内存吗?】

内存查看

每个选项的含义:
第一行:
total:物理内存的总大小
used:已经使用的物理内存大小
free:空闲的物理内存大小
shared:多个进程共享的内存大小
buffers/cached:磁盘缓存的大小
第二行Mem:代表物理内存使用情况
第三行(-/+ buffers/cached):代表磁盘缓存使用状态
第四行:Swap表示交换空间内存使用状态
free命令输出的内存状态,可以通过两个角度来查看:一个是从内核的角度来看,一个是从应用层的角度来看的。
从内核的角度来查看内存的状态
就是内核目前可以直接分配到,不需要额外的操作,即为上面free命令输出中第二行Mem项的值,可以看出,此系统物理内存有3894036K,空闲的内存只有420492K,也就是40M多一点,我们来做一个这样的计算:
3894036 – 3473544 = 420492
其实就是总的物理内存减去已经使用的物理内存得到的就是空闲的物理内存大小,注意这里的可用内存值420492并不包含处于buffers和cached状态的内存大小。
如果你认为这个系统空闲内存太小,那你就错了,实际上,内核完全控制着内存的使用情况,Linux会在需要内存的时候,或在系统运行逐步推进时,将buffers和cached状态的内存变为free状态的内存,以供系统使用。
从应用层的角度来看系统内存的使用状态
也就是Linux上运行的应用程序可以使用的内存大小,即free命令第三行 -/+ buffers/cached 的输出,可以看到,此系统已经使用的内存才2068224K,而空闲的内存达到1825812K,继续做这样一个计算:
420492+(72972+1332348)=1825812
通过这个等式可知,应用程序可用的物理内存值是Mem项的free值加上buffers和cached值之和,也就是说,这个free值是包括buffers和cached项大小的,对于应用程序来说,buffers/cached占有的内存是可用的(有特殊情况下面会讲),因为buffers/cached是为了提高文件读取的性能,当应用程序需要用到内存的时候,buffers/cached会很快地被回收,以供应用程序使用。但是请注意,即使是回收了由于缓存中的数据。也不是直接丢失,而是写入到磁盘。这其中的I/O开销也是很大的。会出现一个I/O的飙升。

好的那是不是这样就是对free命令已经很了解了呢?其实不然,在系统中其实还是有很多的缓存不会被回收。你比如:tmpfs的占用cache,还有共享内存占用。除非删除否则是,不会被回收的。因此也不要过于看重buffers/cached。具体情况还是要具体分析的。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: