按照传统,Linux不同的发行版本和不同的内核对各项参数及设置均做了改动,从而使得系统能够获得更好的性能。下边将分四部分介绍在RedHatEnterpriseLinuxAS和SUSELINUXEnterpriseServer系统下,如何用以下几种技巧进行性能的优化:QUOTE:1、Disablingdaemons(关闭daemons)2、ShuttingdowntheGUI(关闭GUI)3、Changingkernelparameters(改变内核参数)4、Kernelparameters(内核参数)5、Tuningtheprocessorsubsystem(处理器子系统调优)6、Tuningthememorysubsystem(内存子系统调优)7、Tuningthefilesystem(文件系统子系统调优)8、Tuningthenetworksubsystem(网络子系统调优)1关闭daemons有些运行在服务器中的daemons(后台服务),并不是完全必要的。关闭这些daemons可释放更多的内存、减少启动时间并减少CPU处理的进程数。减少daemons数量的同时也增强了服务器的安全性。缺省情况下,多数服务器都可以安全地停掉几个daemons。Table10-1列出了RedHatEnterpriseLinuxAS下的可调整进程.Table10-2列出了SUSELINUXEnterpriseServer下的可调整进程.注意:关闭xfsdaemon将导致不能启动X,因此只有在不需要启动GUI图形的时候才可以关闭xfsdaemon。使用startx命令前,开启xfsdaemon,恢复正常启动X。可以根据需要停止某个进程,如要停止sendmail进程,输入如下命令:RedHat:/sbin/servicesendmailstopSUSELINUX:/etc/init.d/sendmailstop也可以配置在下次启动的时候不自动启动某个进程,还是sendmail:RedHat:/sbin/chkconfigsendmailoffSUSELINUX:/sbin/chkconfig-ssendmailoff除此之外,LINUX还提供了图形方式下的进程管理功能。对于RedHat,启动GUI,使用如下命令:/usr/bin/redhat-config-services或者鼠标点击MainMenu-SystemSettings-ServerSettings-Services.提示:并非所有的daemons都会显示在该配置界面,如要看到全部的daemons,使用如下命令:/sbin/chkconfig–list对于SUSELINUX,图形界面是YaST2,可用如下命令来启动/sbin/yast2runlevel或者如Figure10-2所示用鼠标点击Browse:YaST/?YaSTmodules?System?Runleveleditor2关闭GUI只要有可能,就不要在Linuxserver上启动GUI图形,通常在Linuxserver上,没有必要启动GUI。,所有的管理任务均可在命令行方式下完成、或者通过重定向X和Web浏览器界面。有几个可用的基于Web的工具(例如webmin,Linuxconf,和SWAT).需要的时候启动GUI,用完马上关闭GUI。多数情况,服务器运行在runlevel3,即在机器启动的时候不进入GUI。命令行方式下,执行startx来启动Xserver.1.查看runlevel的命令:runlevel会显示出上次和当前的runlevel(如N5表示没有上次的runlevel(N),当前的runlevel是5).2.在不同的runlevels之间切换,使用命令init如切换到runlevel3,键入命令init3下边是对Linux中不同runlevels的简要描述–0–Halt停机(不要将0设置为缺省,否则服务器启动后就会马上关闭)–1-Singleusermode单用户模式–2-Multi-user不带NFS的多用户模式(如果没有网络,相当与3)–3-Fullmulti-usermode完全多用户模式–4–Unused未使用–5-X11–6–Reboot重启(不要将6设置为缺省,否则服务器会不断地重启)修改文件/etc/inittab来设置机器启动的runlevel,如Figure10-3。对于SUSELINUXEnterpriseServer,执行YaSTrunlevel命令改变缺省runlevel值.如图Figure10-2。缺省情况下,保存了6个控制台:F1……F6。为节省内存,可以减少为3个。使用mingettyttyx命令来实现,如图Figure10-3提示:即便是已经关闭了GUI,依然可以远程连接并启动GUI,可以使用ssh-x。3改变内核参数Linux内核是操作系统的核心,对所有的Linux发行版本是通用的。内核参数可以改变,在命令行下执行sysctl命令。提示:缺省情况下,LINUX内核包括不必重启就可以使用sysctl命令的必要的模块。尽管如此,如果你在安装系统的时候选择移除该功能,那么你只有重新启动LINUX,才可以使得改变生效。SUSELINUX提供了图形界面下的修改方式。使用如下命令来启动powertweak工具:/sbin/yastpowertweak使用如下命令启动基于字符的管理菜单:/sbin/yast2powertweakRedHat也提供了图形界面下更改sysctl参数的方式:/usr/bin/redhat-config-proc如图Figure10-5:Parameterstoragelocations内核参数保存在/proc(特别是/proc/sys),提供了内核、处理器、内存、网络及其他组件的相关参数。每个执行的进程都有一个以相应PID命名的目录。Figure10-3列出了一些包括内核信息的文件。4内核的参数Table10-5列出了RedHatV2.4与性能关系密切的一些内核参数。5处理器子系统调优处理器对于应用和数据库服务器来讲是最重要的硬件子系统之一。然而在这些系统中,CPU经常是性能的瓶颈。在配有Xeon处理器的高端服务器中,你可以启用或者关闭Hyper-Threading(超线程功能)。Hyper-Threading在操作系统里将一颗处理器虚拟化为两颗使用。RedHatEnterpriseLinuxAS和SUSELINUXEnterpriseServer都支持该功能,从而可以使处理器在同一时刻执行两个线程或者进程。对于支持Hyper-Threading的操作系统和软件来说,不需要增加CPU时钟频率即可使性能得到明显的改进。例如,在4路的服务器上起用Hyper-Threading功能并使用性能监测工具(如top)来检测,可以看到8颗处理器。如图Figure10-6提示,对于Hyper-Threading:_基于SMP内核的LINUX才可以支持Hyper-Threading_安装的CPU数量越多,从Hyper-Threading获得的性能上的提高就越少。可获得的性能提高大约为:–2颗物理CPU:15-25%––4颗物理CPU:1-13%––8颗物理CPU:0-5%–如需更多的关于Hyper-Threading信息,可查看更多。EM64T是IntelIA-32处理器的64-bit扩展。意思是,处理器能够支持更多的内存并支持64-bit应用同时完全兼容现存的32-bit应用。RedHatEnterpriseLinux3Update2和SUSELINUXEnterpriseServer9支持这种新的处理器。如需更多的EM64T信息,可查看更多。选择正确的内核RedHatEnterpriseLinuxAS和SUSELINUXEnterpriseServer都包括有若干个内核包,如Table10-6所列。选择合适的内核对性能非常重要。6内存子系统的调优内存子系统的调优不是很容易,需要不停地监测来保证内存的改变不会对服务器的其他子系统造成负面影响。如果要改变虚拟内存参数(在/proc/sys/vm),建议您每次只改变一个参数然后监测效果。对与虚拟内存的调整包括以下几个项目:配置Linux内核如何更新dirtybuffers到磁盘。磁盘缓冲区用于暂存磁盘的数据。相对于内存来讲,磁盘缓冲区的速度很慢。因此,如果服务器使用这类内存,性能会成问题。当缓冲区内的数据完全dirty,使用:sysctl-wvm.bdflush=3050000500300060200vm.bdflush有9个参数,但是建议您只改变其中的3个:nfract,为排队写入磁盘前,bdflushdaemon允许的缓冲区最大百分比ndirty,为bdflush即刻写的最大缓冲区的值。如果这个值很大,bdflush需要更多的时间完成磁盘的数据更新。nfract_sync,发生同步前,缓冲区变dirty的最大百分比配置kswapddaemon,指定Linux的内存交换页数量sysctl-wvm.kswapd=10243264三个参数的描述如下:–tries_base相当于内核每次所交换的“页”的数量的四倍。对于有很多交换信息的系统,增加这个值可以改进性能。–tries_min是每次kswapdswaps出去的pages的最小数量。–swap_cluster是kswapd即刻写如的pages数量。数值小,会提高磁盘I/O的性能;数值大可能也会对请求队列产生负面影响。如果要对这些参数进行改动,请使用工具vmstat检查对性能的影响。其它可以改进性能的虚拟内存参数为:_buffermem_freepages_overcommit_memory_page-cluster_pagecache_pagetable_cache7网络子系统的调优操作系统安装完毕,就要对网络子系统进行调优。对其它子系统的影响:影响CPU利用率,尤其在有大量TCP连接、块尺寸又非常小时,内存的使用会明显增加。如何预防性能下降如下的sysctl命令用于改变安全设置,但是它也可以防止网络性能的下降。这些命令被设置为缺省值。◆关闭如下参数可以防止黑客对服务器IP地址的攻击◆开启TCPSYNcookies,保护服务器避免受syn-flood攻击,包括服务取决denial-of-service(DoS)或者分布式服务拒绝distributeddenial-of-service(DDoS)(仅适用RedHatEnterpriseLinuxAS)◆以下命令使服务器忽略来自被列入网关的服务器的重定向。因重定向可以被用来进行攻击,所以我们只接受有可靠来源的重定向。另外,你可以配置接受或拒绝任何ICMP重定向。ICMP重定向是路由器传输路由信息的机制。比如,当网关接收到来自所接网络主机的Internet数据报时,网关可以发送重定向信息到一台主机。网关检查路由表获得下一个网关的地址,第二个网关将数据报路由到目标网络.关闭这些重定向得命令如下:◆如果这个服务器不是一台路由器,那么它不会发送重定向,所以可以关闭该功能:◆配置服务器拒绝接受广播风暴或者smurf攻击attacks:◆忽略所有icmp包或者pings:◆有些路由器针对广播祯发送无效的回应,每个都产生警告并在内核产生日志.这些回应可以被忽略:8.针对TCP和UDP的调优下边的命令用来对连接数量非常大的服务器进行调优。◆对于同时支持很多连接的服务器,新的连接可以重新使用TIME-WAIT套接字.这对于Web服务器非常有效:如果你使用该命令,还要启动TIME-WAIT套接字状态的快速循环功能:图Figure10-7显示出将这些功能启用,连接数量明显降低.因为每个TCP传输都包含远程客户端的协议信息缓存,所以有利于提高性能.缓存中存放round-trip时间、最大segment大小、拥塞窗口的信息。◆参数tcp_fin_timeout是套接字关闭时,保持FIN-WAIT-2状态的时间。一个TCP连接以