主要内容:
*五条优化的技巧
*及时的优化方法
及时调整:
有时候,您没有时间去理解一些细节:用户和管理让您喘但是气来,而且您必须马上解决一个问题。或许您是个后备的系统管理员,那天当您的同事在十个用户冲进您们公用的办公室,需要提高性能之前外出了。或许您是个定了契约的系统管理员需要一个快捷的目录条记录一些可能的系统错误。或许您已已一页一页地读了这本书,在寻找一个简明地参考手册,所以您能够抛开那些记满了笔记地小信笺。
在这一章里面,我们将会总结两个常见但是并不简单地问题地一些解决方法:为了确定和解决一般常见地性能的问题,我应该查看哪部分,优化什么。一般来说 ,在一个新系统里面为了确保性能最优化,我是否需要作一些优化?在我们进入到这些主题地之前,一些警告。
警告! 这一章包含一些危险性很高的命令。他阐明了很多解决办法和步骤,但是没有给出解释。作为一个结果,他冒着把您变成一种草包性能分析家的危险(看第二章的介绍)细心一点。
五条首要的优化技巧
当您看到一个系统的性能比较差的时时候,有五个最基本的问题要去查问。注意---假如没有特别指明,任何的这一些临界的指导方针,其数据假定是每隔30秒的间隔收集一次的。
哪里是硬盘的瓶颈?
几乎每一个运行缓慢的系统,都因为磁盘的I/O负荷超载。查看硬盘,假如他的服务时间大于50毫秒,而且不止一部分繁忙。服务时间实际上叫做"响应时间",他测量的是发出一个读请求到完成这个请求的时间间隔。对于用户的应用程式来说,在关键的路径上经常会进行这种测量。这是很可能的—— 一个严重超负荷的磁盘的响应时间将会以千分之毫秒来计算。(不是印刷错误)。在Solaris系統上,您能够通过命令iostat -xnP 30得到此类信息。
# iostat -xnP 30
....
extended device statistics
扩张设备的统计数据
r/s w/s kr/s kw/s wait actv wsvc_t asvc_t %w %b device
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 c0t0d0s0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 c0t0d0s2
0.7 2.7 5.3 9.5 0.0 0.1 0.0 16.1 0 2 c0t0d0s3
....
在Linux 系统上, 安装包含iostat命令的可选包,察看一下await的列。
# iostat -x -d 30
Linux 2.4.2-2 (aiua) 07/29/2001
....
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await
svctm %util
hde 4.79 1.40 86.95 3.26 158.87 37.43 2.18 1.01 11.22
8.14 7.34
hde1 0.00 0.00 82.15 0.00 82.15 0.00 1.00 0.46 5.64
5.64 4.63
hde2 4.79 1.40 4.80 3.26 76.70 37.43 14.16 0.55 68.05
34.40 2.77
hde5 0.00 0.00 0.00 0.00 0.02 0.00 8.00 0.00 100.00
100.00 0.00
hdg 9.85 2.36 36.69 5.20 371.85 60.86 10.33 8.60 205.22
45.61 19.11
hdg1 0.00 0.00 0.06 0.00 0.07 0.00 1.03 0.00 2.94
2.94 0.00
hdg2 9.85 2.36 36.63 5.20 371.78 60.86 10.34 8.60 205.54
45.68 19.10
....
由于fsflush命令,UFS文档系统有时将会有很高的服务时间,否则的话,UFS文档系统一般都是空闲的。既然文档系统基本上是空闲的,所以这就不是个问题。但是我从来没有在Linux系统上见到过这种现象。假如这是个Solaris的系统,同时他有大于512M的内存,i节点缓存就足够大了。然而,在一些内存比较小的系统上,增大缓存可能能够帮助减少文档系统管理所需要的I/O操作的数量。
有一个解决磁盘I/O问题和尽可能的把负载分布开的基本技巧。通过把一些经常访问的目录或文档移植到另外一些负载较少的磁盘,或为了提高写的速度,通过投资一个非挥发性内存缓存的磁盘阵列都能够很好地实现这些需要。
您是否拥有有足够的内存?在Solaris系统上,这里有一个指示灯查看您是否缺少内存,那是vmstat命令的sr字段。请记住vmstat输出的的第一行是没有什么意义的。其他的字段对于回答这个问题在很大程度上也是没有用的。尤其是在Solaris7连同更早的版本。关于这个一点这里有很多误解,其中有两条是很普遍的。
空闲列表的大小并不是内存是否缺少的一个标志,因为Solaris系统将会为了缓存最近使用的文档而消耗掉没有使用的内存。×每秒钟的页面的调入或页面调出的数目是个不好的衡量尺度,因为Solaris系统是通过页面机制处理任何的文档系统的I/O操作的。数千K的页面的调入和调出紧紧意味着系统正在工作而已。
不幸地是,假如您过去已习惯于在Solaris7系统上查看命令vmstat的输出 ,Solaris8系统改变了他的输出。他现在能够适当地显示一些相关信息:正在被文档缓存系统使用的页被认为是空闲的(因为实际上他们也是)。所以,现在每个人都会问“这些空闲的内存来在哪里?”而他们在Solaris7系统中则问“我的空闲内存哪里去了?”。
一个方法判断您您是否缺少内存仍然是速率--页扫描器扫描页查看他们是否已被释放。假如您在Solaris7或更早的版本缺少内存,您应该定制内存每秒250页。假如您是在Solaris8系统上密,任何的页扫描活动都意味着您缺少内存。
处理器是否超载?最好的衡量处理器是否超负荷的标准是查看运行队列的长度。在Solaris系统和Linux系统上都是使用vmstat命令和查看 procs r 字段的值的方法去查看队列的长度的。假如在系统上,这个值大概四倍大于处理器的数目,那么进程就有可能为了得到一个时间片而等待了太长时间。
假如mutex stalls的数目(在Solaris系统上可能是mpstate命令的smtx字段)很大,(大概是过处理器数目的250倍左右),您应该升级您的中央处理器(CPU)到速度更快一些,而不是加多一些。
进程是否被磁盘I/O阻塞了?假如一个进程被阻塞了,他就是磁盘瓶颈的一个标志。您能够通过vmstat命令的 procs b字段查看被阻塞了的进程数目,任何时候任何进程被阻塞了,那么系统就会报告说任何的CPU因为等待I/O而被闲置起来了。
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!



