Linux系统资源监控
转载的,调了下格式,删了部分
⼀、影响Linux服务器性能的因素
1.1、操作系统:CPU,内存,磁盘,带宽
1.2、程序本⾝
⼆、系统性能评估标准
三、系统性能分析⼯具
linux系统安装步骤csdn3.1、常⽤系统命令
Vmstat、sar、iostat、netstat、free、ps、top等
3.2、常⽤组合⽅式
· ⽤vmstat、sar、iostat检测是否是CPU瓶颈
·
⽤free、vmstat检测是否是内存瓶颈
· ⽤iostat检测是否是磁盘I/O瓶颈
· ⽤netstat检测是否是⽹络带宽瓶颈
四、Linux性能评估与优化
4.1、系统整体性能评估(uptime命令)
[test@localhost ~]$ uptime
17:14:26 up 15 min, 2 users, load average: 0.00, 0.03, 0.08
这⾥需要注意的是:load average这个输出值,这三个值的⼤⼩⼀般不能⼤于系统CPU的个数,例如,本输出中系统有8个CPU,如果load average的三个值长期⼤于8时,说明CPU很繁忙,负载很⾼,可能会影响系统性能,但是偶尔⼤于8时,倒不⽤担⼼,⼀般不会影响系统性能。相反,如果load average的输出值⼩于CPU的个数,则表⽰CPU还有空闲的时间⽚,⽐如本例中的输出,CPU是⾮常空闲的。
4.2、 CPU性能评估
1)利⽤vmstat命令监控系统CPU
该命令可以显⽰关于系统各种资源之间相关性能的简要信息,这⾥我们主要⽤它来看CPU⼀个负载情况。
下⾯是vmstat命令在某个系统的输出结果:
vmstat 5 5 每隔5秒采样⼀次,共采样5次
procs
r列表⽰运⾏和等待cpu时间⽚的进程数,这个值如果长期⼤于系统CPU的个数,说明CPU不⾜,需要增加CPU;
b列表⽰在等待资源的进程数,⽐如正在等待I/O、或者内存交换等。
cpu
us列显⽰了⽤户进程消耗的CPU 时间百分⽐。us的值⽐较⾼时,说明⽤户进程消耗的cpu时间多,但是如果长期⼤于50%,就需要考虑优化程序或算法;
sy列显⽰了内核进程消耗的CPU时间百分⽐。Sy的值较⾼时,说明内核消耗的CPU资源很多。
根据经验,us+sy的参考值为80%,如果us+sy⼤于 80%说明可能存在CPU资源不⾜。
问题
1.你是否遇到过系统CPU整体利⽤率不⾼,⽽应⽤缓慢的现象?
在⼀个多CPU的系统中,如果程序使⽤了单线程,会出现这么⼀个现象,CPU的整体使⽤率不⾼,但是系统应⽤却响应缓慢,这可能是由于程序使⽤单线程的原因,单线程只使⽤⼀个CPU,导致这个CPU占⽤率为100%,⽆法处理其它请求,⽽其它的CPU却闲置,这就导致了整体CPU使⽤率不⾼,⽽应⽤缓慢现象的发⽣。
4.3、内存性能评估
1)利⽤free指令监控内存
free是监控linux内存使⽤状况最常⽤的指令,看下⾯的⼀个输出:
⼀般有这样⼀个经验公式:
应⽤程序可⽤内存/系统物理内存>70%时,表⽰系统内存资源⾮常充⾜,不影响系统性能,
应⽤程序可⽤内存/系统物理内存<20%时,表⽰系统内存资源紧缺,需要增加系统内存,
20%<;应⽤程序可⽤内存/系统物理内存<70%时,表⽰系统内存资源基本能满⾜应⽤需求,暂时不影响系统性能。
2)利⽤vmstat命令监控内存
memory
swpd列表⽰切换到内存交换区的内存数量(以k为单位)。如果swpd的值不为0,或者⽐较⼤,只要si
、so的值长期为0,这种情况下⼀般不⽤担⼼,不会影响系统性能。
free列表⽰当前空闲的物理内存数量(以k为单位)
buff列表⽰buffers cache的内存数量,⼀般对块设备的读写才需要缓冲。
cache列表⽰page cached的内存数量,⼀般作为⽂件系统cached,频繁访问的⽂件都会被cached,如果cache值较⼤,说明cached的⽂件数较多,如果此时IO中bi⽐较⼩,说明⽂件系统效率⽐较好。
swap
si列表⽰由磁盘调⼊内存,也就是内存进⼊内存交换区的数量。
so列表⽰由内存调⼊磁盘,也就是内存交换区进⼊内存的数量。
⼀般情况下,si、so的值都为0,如果si、so的值长期不为0,则表⽰系统内存不⾜。需要增加系统内存。
4.4、磁盘I/O性能评估
1)磁盘存储基础
熟悉RAID存储⽅式,可以根据应⽤的不同,选择不同的RAID⽅式。
尽可能⽤内存的读写代替直接磁盘I/O,使频繁访问的⽂件或数据放⼊内存中进⾏操作处理,因为内存读写操作⽐直接磁盘读写的效率要⾼千倍。
将经常进⾏读写的⽂件与长期不变的⽂件独⽴出来,分别放置到不同的磁盘设备上。
对于写操作频繁的数据,可以考虑使⽤裸设备代替⽂件系统。
磁盘RAID技术,Redundant Array of Independent Disk,即独⽴磁盘冗余阵列,简称磁盘阵列。RAID通过将多块独⽴的磁盘(物理硬盘)按不同的⽅式组合起来形成⼀个磁盘组(逻辑硬盘),从⽽提供⽐单个磁盘更⾼的IO性能和数据冗余。根据磁盘组合⽅式不同,分为
RAID0、RAID1、RAID2、RAID3、RAID4、RAID5、RAID6、RAID7、RAID0+1、RAID10等,常⽤的有RAID0、RAID1、RAID5、RAID0+1。
RAID0:
RAID0:通过把多块硬盘粘合成⼀个容量更⼤的硬盘组,提⾼磁盘的性能和吞吐量,成本低,⾄少两块磁盘,但是没有容错和数据修复功能,只能⽤在对数据安全性要求不⾼的环境中。
RAID1:也就是磁盘镜像,通过把⼀个磁盘的数据镜像到另外⼀个磁盘上,最⼤限度的保证磁盘数据的可靠性和可修改性,具有很⾼的数据冗余RAID1:
能⼒,但是磁盘利⽤率只有50%,成本较⾼,多⽤在保存重要数据的场合。
RAID5:磁盘分段加奇偶校验技术,提⾼了系统的可靠性。读出效率很⾼,写效率⼀般,⾄少需要3块磁盘,允许⼀块磁盘故障,不影响数据的RAID5:
可⽤性。
RAID0+1:
RAID0+1:把RAID0和RAID1技术结合起来,⾄少需要4块硬盘,每个盘都有其镜像盘,提⾼全冗余能⼒,并具有快速读写能⼒。
使⽤裸设备的优点有:
数据可以直接读写,不需要经过操作系统级的缓存,节省了内存资源,避免了内存资源争⽤。
避免了⽂件系统级的维护开销,⽐如⽂件系统需要维护超级块、I-node等。
避免了操作系统的cache预读功能,减少了I/O请求。
使⽤裸设备的缺点是:
数据管理、空间管理不灵活,需要很专业的⼈来操作。
————————————————
版权声明:本⽂为CSDN博主「托桃之城」的原创⽂章,遵循CC 4.0 BY-SA版权协议,转载请附上原⽂出处链接及本声明。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论