设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 数据 手机
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

老牌运维教你如何快速分析Linux服务器的性能问题(4)

发布时间:2019-09-29 12:54 所属栏目:21 来源:互联网蚂蚁哥
导读:对于内存的监控,在vmstat中重点关注的是swpd、si和so行,从这个输出可以看出,此系统内存资源紧缺,swpd占用了900M左右内存,si和so占用很大,而由于系统内存的紧缺,导致出现15%左右的系统等待,此时增加系统的内

对于内存的监控,在vmstat中重点关注的是swpd、si和so行,从这个输出可以看出,此系统内存资源紧缺,swpd占用了900M左右内存,si和so占用很大,而由于系统内存的紧缺,导致出现15%左右的系统等待,此时增加系统的内存是必须要做的。

2.4 sar -r命令组合

sar命令也可以监控linux的内存使用状况,可以通过“sar –r”组合查看系统内存和交换空间的使用率。请看下面的一个输出:

  1. [root@webserver ~]# sar -r 2 3 
  2. Linux 2.6.9-42.ELsmp (webserver) 11/30/2008 _i686_ (8 CPU) 
  3.     09:57:33 PM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit 
  4. 09:57:35 PM 897988 7408556 89.19 249428 6496532 786556 4.71 
  5. 09:57:37 PM 898564 7407980 89.18 249428 6496532 784276 4.70 
  6. 09:57:39 PM 899196 7407348 89.17 249440 6496520 782132 4.69 
  7. Average: 898583 7407961 89.18 249432 6496528 784321 4.70 

其中:

Kbmemfree表示空闲物理内存大小,kbmemused表示已使用的物理内存空间大小,%memused表示已使用内存占总内存大小的百分比,kbbuffers和kbcached分别表示Buffer Cache和Page Cache的大小,kbcommit和%commit分别表示应用程序当前使用的内存大小和使用百分比。

可以看出sar的输出其实与free的输出完全对应,不过sar更加人性化,不但给出了内存使用量,还给出了内存使用的百分比以及统计的平均值。从%commit项可知,此系统目前内存资源充足。

2.5 本节小结

上面介绍了内存监控常用的几个指令以及一些经验规则,其实现在的系统在内存方面出现的瓶颈已经很少,因为内存价格很低,充足的内存已经完全能满足应用程序和系统本身的需要,如果系统在内存方面出现瓶颈,很大的可能是应用程序本身的问题造成的。

3 磁盘I/O性能评估

在对磁盘I/O性能做评估之前,必须知道的几个方面是:

  •  熟悉RAID存储方式,可以根据应用的不同,选择不同的RAID方式,例如,如果一个应用经常有大量的读操作,可以选择RAID5方式构建磁盘阵列存储数据,如果应用有大量的、频繁的写操作,可以选择raid0存取方式,如果应用对数据安全要求很高,同时对读写也有要求的话,可以考虑raid01存取方式等等。
  • 尽可能用内存的读写代替直接磁盘I/O,使频繁访问的文件或数据放入内存中进行操作处理,因为内存读写操作比直接磁盘读写的效率要高千倍。
  • 将经常进行读写的文件与长期不变的文件独立出来,分别放置到不同的磁盘设备上。
  • 对于写操作频繁的数据,可以考虑使用裸设备代替文件系统。这里简要讲述下文件系统与裸设备的对比:

使用裸设备的优点有:

  • 数据可以直接读写,不需要经过操作系统级的缓存,节省了内存资源,避免了内存资源争用。
  • 避免了文件系统级的维护开销,比如文件系统需要维护超级块、I-node等。
  • 避免了操作系统的cache预读功能,减少了I/O请求。

使用裸设备的缺点是:

  • 数据管理、空间管理不灵活,需要很专业的人来操作。

其实裸设备的优点就是文件系统的缺点,反之也是如此,这就需要我们做出合理的规划和衡量,根据应用的需求,做出对应的策略。

下面接着介绍对磁盘IO的评估标准。

3.1 sar -d命令组合

通过“sar –d”组合,可以对系统的磁盘IO做一个基本的统计,请看下面的一个输出:

  1. [root@webserver ~]# sar -d 2 3 
  2. Linux 2.6.9-42.ELsmp (webserver) 11/30/2008 _i686_ (8 CPU) 
  3.     11:09:33 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 
  4. 11:09:35 PM dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 
  5.     11:09:35 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 
  6. 11:09:37 PM dev8-0 1.00 0.00 12.00 12.00 0.00 0.00 0.00 0.00 
  7.     11:09:37 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 
  8. 11:09:39 PM dev8-0 1.99 0.00 47.76 24.00 0.00 0.50 0.25 0.05 
  9.     Average: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 
  10. Average: dev8-0 1.00 0.00 19.97 20.00 0.00 0.33 0.17 0.02 

对上面每项的输出解释如下:

  • DEV表示磁盘设备名称。
  • tps表示每秒到物理磁盘的传送数,也就是每秒的I/O流量。一个传送就是一个I/O请求,多个逻辑请求可以被合并为一个物理I/O请求。
  • d_sec/s表示每秒从设备读取的扇区数(1扇区=512字节)。
  • wr_sec/s表示每秒写入设备的扇区数目。
  • avgrq-sz表示平均每次设备I/O操作的数据大小(以扇区为单位)。
  • avgqu-sz表示平均I/O队列长度。
  • await表示平均每次设备I/O操作的等待时间(以毫秒为单位)。
  • svctm表示平均每次设备I/O操作的服务时间(以毫秒为单位)。
  • %util表示一秒中有百分之几的时间用于I/O操作。

Linux中I/O请求系统与现实生活中超市购物排队系统有很多类似的地方,通过对超市购物排队系统的理解,可以很快掌握linux中I/O运行机制。比如:

avgrq-sz类似与超市排队中每人所买东西的多少。

avgqu-sz类似与超市排队中单位时间内平均排队的人数。

await类似与超市排队中每人的等待时间。

svctm类似与超市排队中收银员的收款速度。

%util类似与超市收银台前有人排队的时间比例。

对以磁盘IO性能,一般有如下评判标准:

正常情况下svctm应该是小于await值的,而svctm的大小和磁盘性能有关,CPU、内存的负荷也会对svctm值造成影响,过多的请求也会间接的导致svctm值的增加。

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读