资源描述
中标普华Linux系统讲座系统优化,Linux性能监测工具,1、uptimeuptime命令用于查看服务器运行了多长时间以及有多少个用户登录,快速获知服务器的负荷情况。uptime的输出包含一项内容是loadaverage,显示了最近1,5,15分钟的负荷情况。它的值代表等待CPU处理的进程数,如果CPU没有时间处理这些进程,loadaverage值会升高;反之则降低。对于单CPU的机器,1或者2是可以接受的值,说明每个进程都可以及时被处理;对于多路CPU的机器,loadaverage值可能在8到10之间。也可以使用uptime命令来判断网络性能。例如,某个网络应用性能很低,通过运行uptime查看服务器的负荷是否很高,如果不是,那么问题应该是网络方面造成的。下边是uptime的输出样式,Linux性能监测工具,2、dmesgdmesg命令主要用来显示内核信息。使用dmesg可以有效诊断机器硬件故障或者添加硬件出现的问题。另外,使用dmesg可以确定您的服务器安装了那些硬件。每次系统重启,系统都会检查所有硬件并将信息记录下来。执行/bin/dmesg命令可以查看该记录。3、toptop命令显示处理器的活动状况。缺省情况下,显示占用CPU最多的任务,并且每隔5秒钟做一次刷新。,Linux性能监测工具,4、iostatiostat由RedHatEnterpriseLinuxAS发布。执行iostat命令可以从系统启动之后的CPU平均时间,类似于uptime。除此之外,iostat还对创建一个服务器磁盘子系统的活动报告。该报告包含两部分:CPU使用情况和磁盘使用情况5、vmstatvmstat提供了processes,memory,paging,blockI/O,traps和CPU的活动状况.,Linux性能监测工具,6、sarsar是RedHatEnterpriseLinuxAS发行的一个工具。sar用于收集、报告或者保存系统活动信息。sar由三个应用组成:sar显示数据、sa1和sa2用于收集和保存数据(在/usr/lib/sa下)。使用sar运行实时报告,可以得到详细的CPU使用情况(%user,%nice,%system,%idle)、内存页面调度、网络I/O、进程活动、块设备活动、以及interrupts/second7、free/bin/free命令显示所有空闲的和使用的内存数量,包括swap。同时也包含内核使用的缓存。,Linux性能监测工具,8、pmappmap可以报告某个或多个进程的内存使用情况。使用pmap判断主机中哪个进程因占用过多内存导致内存瓶颈。9、stracestrace截取和记录系统进程调用,以及进程收到的信号。是一个非常有效的检测、指导和调试工具。系统管理员可以通过该命令容易地解决程序问题。,Linux性能监测工具,按照传统,Linux不同的发行版本和不同的内核对各项参数及设置均做了改动,从而使得系统能够获得更好的性能。下边将分四部分介绍在RedHatEnterpriseLinuxAS系统下,如何用以下几种技巧进行性能的优化:1、Disablingdaemons(关闭daemons)2、ShuttingdowntheGUI(关闭GUI)3、Tuningtheprocessorsubsystem(处理器子系统调优)4、Tuningthefilesystem(文件系统子系统调优)5、Tuningthenetworksubsystem(网络子系统调优),Linux性能调优,1、关闭daemons有些运行在服务器中的daemons(后台服务),并不是完全必要的。关闭这些daemons可释放更多的内存、减少启动时间并减少CPU处理的进程数。减少daemons数量的同时也增强了服务器的安全性。缺省情况下,多数服务器都可以安全地停掉几个daemons。,Linux性能调优,Linux性能调优,注意:关闭xfsdaemon将导致不能启动X,因此只有在不需要启动GUI图形的时候才可以关闭xfsdaemon。使用startx命令前,开启xfsdaemon,恢复正常启动X。,Linux性能调优,root可以根据需要停止某个进程,如要停止sendmail进程,输入如下命令:/sbin/servicesendmailstop也可以配置在下次启动的时候不自动启动某个进程,例如设置sendmail:/sbin/chkconfigsendmailoff除此之外,LINUX还提供了图形方式下的进程管理功能。提示:并非所有的daemons都会显示在该配置界面,如要看到全部的daemons,使用如下命令:/sbin/chkconfiglist,2、关闭GUI只要有可能,就不要在Linuxserver上启动GUI图形,通常在Linuxserver上,没有必要启动GUI。所有的管理任务均可在命令行方式下完成。多数情况,服务器运行在runlevel3,即在机器启动的时候不进入GUI。需要的时候启动GUI命令行方式下,执行startx来启动Xserver,用完马上关闭GUI。,Linux性能调优,3、处理器子系统调优处理器对于应用和数据库服务器来讲是最重要的硬件子系统之一。然而在这些系统中,CPU经常是性能的瓶颈。在配有Xeon处理器的高端服务器中,你可以启用或者关闭Hyper-Threading(超线程功能)。Hyper-Threading在操作系统里将一颗处理器虚拟化为两颗使用。RedHatEnterpriseLinuxAS支持该功能,从而可以使处理器在同一时刻执行两个线程或者进程。对于支持Hyper-Threading的操作系统和软件来说,不需要增加CPU时钟频率即可使性能得到明显的改进。例如,在4路的服务器上起用Hyper-Threading功能,使用性能监测工具top来检测,可以看到8颗处理器否则只有4颗。,Linux性能调优,提示:对于Hyper-Threading:_基于SMP内核的LINUX才可以支持Hyper-Threading_安装的CPU数量越多,从Hyper-Threading获得的性能上的提高就越少。可获得的性能提高大约为:2颗物理CPU:15-25%4颗物理CPU:1-13%8颗物理CPU:0-5%,Linux性能调优,选择正确的内核RedHatEnterpriseLinuxAS包括有若干个内核包,选择合适的内核对性能非常重要。,Linux性能调优,4、文件系统的调优所有数据都要从磁盘获取并都要保存到磁盘。磁盘访问速度通常以毫秒来计算,但仍比其它组件要慢上千倍,如内存。Linux文件系统定义了数据存储和访问的方式。Linux可用的文件系统有多种,它们的性能和可扩展性各不相同。除了保存和管理磁盘数据,文件系统还负责保证数据的完整性。新版的Linux缺省安装已经包括日志文件系统(journalingfilesystems),日志文件系统可防止系统崩溃时导致的数据不一致问题。对文件系统元数据(metadata)的更改都被保存在一份单独的日志里,当发生系统崩溃时可以根据日志正确地恢复数据。除此之外,日志使系统重新启动时不必进行文件系统的检查,从而缩短了恢复时间。同其他方面的计算一样,性能和完整性是相互平衡的。Linux服务器多用于企业环境及数据中心,因此要求具备更高的可用性。,Linux性能调优,安装Linux前,硬件方面的考虑当前Linux的发行版本对CPU、硬盘和内存方面均有明确的安装要求。然而,对于如何设置磁盘子系统的说明远远不够。由于Linux服务器被广泛的应用于各种环境,数据中心的服务器整合,我们首先要回答的问题就是:“该服务器的功能是什么?”磁盘子系统可能是整个服务器系统性能的主要方面。了解服务器的功能是判断I/O子系统对性能产生多大影响的关键。,Linux性能调优,下面几种服务器的磁盘I/O性能是非常重要的:-文件和打印服务器要求在用户和磁盘子系统之间快速地移动数据。因文件服务器的功能是向客户端发送数据,所以要快速读取所有的数据。-数据库服务器的最终目标是从磁盘上的数据仓库里查找和获取数据。即便有足够的内存,多数数据库服务器依然需要大量的磁盘I/O将数据读入内存和更新磁盘数据。下面几种服务器的磁盘I/O性能不是最重要的:-邮件服务器用于电子邮件的存储和转发,通常产生较大的通信量。对这类服务器来讲,网络性能更为重要。-Web服务器用于发布静态和动态的Web页面,网络和内存子系统的性能非常重要。,Linux性能调优,磁盘技术的选择磁盘技术实现容量及性能由低到高依次为:IDE,SCSI,SATA,iSCSI(中端存储),FibreChannel(高级存储)磁盘的数量磁盘的数量多少会影响到系统性能。对磁盘容量的需求通常是考虑磁盘数量的唯一因素,而忽视了吞吐量的因素。好的性能是依赖于提供I/O读写的磁头数量。简单的,我们可通过RAID技术来实现。提示:通常增加硬盘数量是提高磁盘性能的一个最有效方法。,Linux性能调优,RedHat的缺省文件系统:Ext3Ext3相对于Ext2,增加了日志。其主要特点为:-Availability(可用性):Ext3提供数据的写一致功能。即意外宕机情况下,不需要检查数据的一致性,使系统恢复时间从几小时缩短为几秒钟。-Dataintegrity(数据完整性):通过mount命令定义日志方式:data=journal,所有的数据,包括文件数据和元数据,都被定义为日志型。-Speed(速度):通过定义日志方式:data=writeback,可以选择获得数据完整性还是写速度的优势来满足不同的业务需求。_Flexibility(灵活性):从Ext2升级到Ext3非常简单,且不需要重新格式化硬盘。使用命令tune2fs并编辑文件/etc/fstab,便可完成升级。,Linux性能调优,访问时间更新linux文件系统当文件被访问,创建,更新的时候会保留纪录。默认的,当文件读写操作的时候,系统会更新last-time-read属性。因为写操作是比较耗费资源的操作,减少不必要的i/o可以整体上提高磁盘性能。在挂接文件系统的时候,加入noatime参数可以禁止inode节点访问时间的修改。如果文件更新时间对于特定的应用不是很重要的话,比如web服务,就可以把noatime参数加入/etc/fstab文件中,比如:/dev/sdb1/mountlocationext3defaults,noatime12推荐利用单独的分区作为挂接点并打开noatime开关,Linux性能调优,选择Ext3文件系统的日志模式Ext3文件系统可选三种日志模式,可以使用mount命令来完成:-data=journal:文件数据和元数据均设置为日志方式,性能开销比较大-data=ordered(缺省设置):顺序写入,先写文件数据,再写元数据-data=writeback:提供最快的访问速度,但是牺牲了数据的一致性。元数据仍然被记录到日志,从而确保元数据的完整。文件数据会在系统崩溃之后恢复到原先的状态。三种方法改变日志模式:*使用mount命令:这里/dev/sdb1是挂载的文件系统mount-odata=writeback/dev/sdb1/mnt/mountpoint*在/etc/fstab文件的选项中:/dev/sdb1/testfsext3defaults,date=writeback00,Linux性能调优,交换分区当物理内存被全部占用,而系统又需要更多的内存时,交换设备发挥作用,系统将内存中很少使用的数据交换到磁盘的交换分区,释放物理内存。从磁盘I/O到交换分区绕过了文件系统,所有的性能开销都在写文件上,因此使提高了性能。一种改进性能的方法是创建多个交换空间,将数据分散到更多的交换分区可以改进性能,这是因为所有的读写请求是被并行处理的,实现并行读写磁盘。还可以根据硬盘性能和需要给这些交换分区设置优先级。例如:,Linux性能调优,给前三个分区赋予相同的优先级使数据被写到三个磁盘中;而不是写满一个再写下一个。三个分区并行使用,以提高性能。当前三个分区用满之后,第四个分区开始启用。也可以将所有分区设置为同一个优先级,但是假如这里有一块磁盘的速度比其它磁盘慢的话,性能就会下降。,Linux性能调优,提示:交换分区不是物理内存的替代品,它存在于物理磁盘中,性能远远低于内存访问速度。通常的做法是把交换分区放在最快的磁盘中。,5、网络子系统的调优针对TCP和UDP的调优,下边的命令用来对连接数量非常大的服务器进行调优:对于同时支持很多连接的服务器,新的连接可以重新使用TIME-WAIT套接字,这对于Web服务器非常有效。如果你使用该命令,还要启动TIME-WAIT套接字状态的快速循环功能。这些功能启用后,连接数量明显降低。因为每个TCP传输都包含远程客户端的协议信息缓存,所以有利于提高性能。,Linux性能调优,参数tcp_fin_timeout是套接字关闭时,保持FIN-WAIT-2状态的时间。一个TCP连接以three-segmentSYN序列开始,以three-segmentFIN序列结束。均不保留数据。通过改变tcp_fin_timeout的值,从FIN序列到内存可以空闲出来处理新连接的时间缩短了,使性能得到改进。注意:改变这个值的前要经过认真的监测,避免因为死套接字造成内存溢出。,Linux性能调优,服务器的一个问题是,同一时刻的大量TCP连接里有很多的连接被打开但是没有使用。TCP的keepalive功能检测到这些连接,缺省情况下,在2小时之后丢掉。2个小时的可能导致内存过度使用,降低性能。因此改成1800秒(30分钟)是个更好的选择:,Linux性能调优,对于所有协议的队列,设置最大系统发送缓存(wmem)和接收缓存(rmem)到8MB:这些设置指定了创建TCP套接字时为其分配的内存容量,另外,使用如下命令发送和接收缓存。该命令设定了三个值:最小值、初始值和最大值。注意:第三个值必须小于或等于wmem_max和rmem_max。,Linux性能调优,当服务器负载繁重或者是有很多客户端都是超长延时的连接故障,可能会导致half-open连接数量的增加。这对于Web服务器很来讲很平常,尤其有很多拨号客户时。这些half-open连接保存在backlogconnections队列中。将这个值最少设置为4096(缺省为1024)。即便是服务器不接收这类连接,设置这个值还能防止受到denial-of-service(syn-flood)的攻击。,Linux性能调优,设置ipfrag参数,尤其是NFS和Samba服务器。这里,我们可以设置用于重新组合IP碎片的最大、最小内存。当ipfrag_high_thresh值被指派,碎片会被丢弃直到达到ipfrag_low_thresh值。当TCP数据包传输发生错误时,开始碎片整理。有效的数据包保留在内存,同时损坏的数据包被转发。例如,设置可用内存范围从256MB到384MB:,Linux性能调优,本章结束,
展开阅读全文