中标普华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/chkconfig–list2、关闭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=writeback00Linux性能调优交换分区当物理内存被全部占用,而系统又需要更多的内存时,交换设备发挥作用,系统将内存中很少使用的数据交换到磁盘的交换分区,释放物理内存。从磁盘I/O到交换分区绕过了文件系统,所有的性能开销都在写文件上,因此使提高了性能。一种改进性能的方法是创建多个交换空间,将数据分散到更多的交换分区可以改进性能,这是因为所有的读写请求是被并行处理的,实现并行读写磁盘。还可以根据硬盘性能和需要给这些交换分区设置优先级。例如:Linux性能调优给前三个分区赋予相同的优先级使数据被写到三个磁盘中;而不是写满一个再写下一个。三个分区并行使用,以提高性能