用Sysctl 调整Linux操作系统的性能.docx
- 文档编号:29006410
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:6
- 大小:21.51KB
用Sysctl 调整Linux操作系统的性能.docx
《用Sysctl 调整Linux操作系统的性能.docx》由会员分享,可在线阅读,更多相关《用Sysctl 调整Linux操作系统的性能.docx(6页珍藏版)》请在冰豆网上搜索。
用Sysctl调整Linux操作系统的性能
用Sysctl调整Linux操作系统的性能
Sysctl是一个允许您改变正在运行中的Linux系统的接口。
它包含一些TCP/IP堆栈和虚拟内存系统的高级选项,这可以让有经验的管理员提高引人注目的系统性能。
用sysctl可以读取设置超过五百个系统变量。
基于这点,sysctl(8)提供两个功能:
读取和修改系统设置。
查看所有可读变量:
%sysctl-a读一个指定的变量,例如kern.maxproc:
%sysctlkern.maxprockern.maxproc:
1044要设置一个指定的变量,直接用variable=value这样的语法:
#sysctlkern.maxfiles=5000kern.maxfiles:
2088–>5000sysctl-w-wUsethisoptionwhenyouwanttochangeasysctlsetting.注意,这个参数是用来改变当前值即虚拟文件系统/proc下的值.sysctl-p-pLoadinsysctlsettingsfromthefilespecifiedor/etc/sysctl.confifnonegiven.Specifying-asfilenamemeansreadingdatafromstandardinput.注:
指定要加载的配置文件并显示参数.如果不指定加载文件的路径,默认为:
/etc/sysctl.conf比如,如果你添加了某个参数到/etc/sysctl.conf,echo"net.ipv4.tcp_keepalive_time=20">>/etc/sysctl.conf那么运行sysctl-p将重新加载配置文件,这样新增加到配置文件的参数便能及时生效了.并且还会显示所有该配置文件中的参数.您可以使用sysctl修改系统变量,也可以通过编辑sysctl.conf文件来修改系统变量。
sysctl.conf看起来很像rc.conf。
它用variable=value的形式来设定值。
指定的值在系统进入多用户模式之后被设定。
并不是所有的变量都可以在这个模式下设定。
sysctl变量的设置通常是字符串、数字或者布尔型。
(布尔型用1来表示'yes',用0来表示'no')。
###############################net.inet.ip.sourceroute=0net.inet.ip.accept_sourceroute=0#############################通过源路由,攻击者可以尝试到达内部IP地址--包括RFC1918中的地址,所以不接受源路由信息包可以防止你的内部网络被探测。
#################################net.inet.tcp.drop_synfin=1###################################安全参数,编译内核的时候加了optionsTCP_DROP_SYNFIN才可以用,可以阻止某些OS探测。
##################################kern.maxvnodes=8446vnode是对文件或目录的一种内部表达。
因此,增加可以被操作系统利用的vnode数量将降低磁盘的I/O。
一般而言,这是由操作系统自行完成的,也不需要加以修改。
但在某些时候磁盘I/O会成为瓶颈,而系统的vnode不足,则这一配置应被增加。
此时需要考虑是非活跃和空闲内存的数量。
要查看当前在用的vnode数量:
#sysctlvfs.numvnodesvfs.numvnodes:
91349要查看最大可用的vnode数量:
#sysctlkern.maxvnodeskern.maxvnodes:
100000如果当前的vnode用量接近最大值,则将kern.maxvnodes值增大1,000可能是个好主意。
您应继续查看vfs.numvnodes的数值,如果它再次攀升到接近最大值的程度,仍需继续提高kern.maxvnodes。
在top
(1)中显示的内存用量应有显著变化,更多内存会处于活跃(active)状态。
####################################kern.maxproc:
964Maximumnumberofprocesses####################################kern.maxprocperuid:
867Maximumprocessesallowedperuserid####################################因为我的maxusers设置的是256,20+16*maxusers=4116。
maxprocperuid至少要比maxproc少1,因为init(8)这个系统程序绝对要保持在运作状态。
我给它设置的2068。
kern.maxfiles:
1928系统中支持最多同时开启的文件数量,如果你在运行数据库或大的很吃描述符的进程,那么应该设置在20000以上,比如kde这样的桌面环境,它同时要用的文件非常多。
一般推荐设置为32768或者65536。
####################################kern.argmax:
262144maximumnumberofbytes(orcharacters)inanargumentlist.命令行下最多支持的参数,比如你在用find命令来批量删除一些文件的时候find.-name"*.old"-delete,如果文件数超过了这个数字,那么会提示你数字太多的。
可以利用find.-name"*.old"-okrm{};来删除。
默认的参数已经足够多了,因此不建议再做修改。
####################################kern.securelevel:
-1-1:
这是系统默认级别,没有提供任何内核的保护错误;0:
基本上作用不多,当你的系统刚启动就是0级别的,当进入多用户模式的时候就自动变成1级了。
1:
在这个级别上,有如下几个限制:
a.不能通过kldload或者kldunload加载或者卸载可加载内核模块;b.应用程序不能通过/dev/mem或者/dev/kmem直接写内存;c.不能直接往已经装在(mounted)的磁盘写东西,也就是不能格式化磁盘,但是可以通过标准的内核接口执行写操作;d.不能启动X-windows,同时不能使用chflags来修改文件属性;2:
在1级别的基础上还不能写没装载的磁盘,而且不能在1秒之内制造多次警告,这个是防止DoS控制台的;3:
在2级别的级别上不允许修改IPFW防火墙的规则。
如果你已经装了防火墙,并且把规则设好了,不轻易改动,那么建议使用3级别,如果你没有装防火墙,而且还准备装防火墙的话,不建议使用。
我们这里推荐使用2级别,能够避免比较多对内核攻击。
####################################kern.maxfilesperproc:
1735每个进程能够同时打开的最大文件数量,网上很多资料写的是32768除非用异步I/O或大量线程,打开这么多的文件恐怕是不太正常的。
我个人建议不做修改,保留默认。
####################################kern.ipc.maxsockbuf:
262144最大的套接字缓冲区,网上有建议设置为2097152(2M)、8388608(8M)的。
我个人倒是建议不做修改,保持默认的256K即可,缓冲区大了可能造成碎片、阻塞或者丢包。
####################################kern.ipc.somaxconn:
128最大的等待连接完成的套接字队列大小,即并发连接数。
高负载服务器和受到Dos攻击的系统也许会因为这个队列被塞满而不能提供正常服务。
默认为128,推荐在1024-4096之间,根据机器和实际情况需要改动,数字越大占用内存也越大。
####################################kern.ipc.nmbclusters:
4800这个值用来调整系统在开机后所要分配给网络mbufs的cluster数量,由于每个cluster大小为2K,所以当这个值为1024时,也是会用到2MB的核心内存空间。
假设我们的网页同时约有1000个联机,而TCP传送及接收的暂存区大小都是16K,则最糟的情况下,我们会需要(16K+16K)*1024,也就是32MB的空间,然而所需的mbufs大概是这个空间的二倍,也就是64MB,所以所需的cluster数量为64MB/2K,也就是32768。
对于内存有限的机器,建议值是1024到4096之间,而当拥有海量存储器空间时,我们可以将它设定为4096到32768之间。
我们可以使用netstat这个指令并加上参数-m来查看目前所使用的mbufs数量。
要修改这个值必须在一开机就修改,所以只能在/boot/loader.conf中加入修改的设定kern.ipc.nmbclusters=32768####################################kern.ipc.shmmax:
33554432共享内存和信号灯("SystemVIPC")如果这些过小的话,有些大型的软件将无法启动安装xine和mplayer提示的设置为67108864,即64M,如果内存多的话,可以设置为134217728,即128M####################################kern.ipc.shmall:
8192共享内存和信号灯("SystemVIPC")如果这些过小的话,有些大型的软件将无法启动安装xine和mplayer提示的设置为32768####################################kern.ipc.shm_use_phys:
0如果我们将它设成1,则所有SystemV共享内存(sharememory,一种程序间沟通的方式)部份都会被留在实体的内存(physicalmemory)中,而不会被放到硬盘上的swap空间。
我们知道物理内存的存取速度比硬盘快许多,而当物理内存空间不足时,部份数据会被放到虚拟的内存上,从物理内存和虚拟内存之间移转的动作就叫作swap。
如果时常做swap的动作,则需要一直对硬盘作I/O,速度会很慢。
因此,如果我们有大量的程序(数百个)需要共同分享一个小的共享内存空间,或者是共享内存空间很大时,我们可以将这个值打开。
这一项,我个人建议不做修改,除非你的内存非常大。
####################################kern.ipc.shm_allow_removed:
0共享内存是否允许移除?
这项似乎是在fb下装vmware需要设置为1的,否则会有加载SVGA出错的提示作为服务器,这项不动也罢。
####################################kern.ipc.numopensockets:
12已经开启的socket数目,可以在最繁忙的时候看看它是多少,然后就可以知道maxsockets应该设置成多少了。
####################################kern.ipc.maxsockets:
1928这是用来设定系统最大可以开启的socket数目。
如果您的服务器会提供大量的FTP服务,而且常快速的传输一些小档案,您也许会发现常传输到一半就中断。
因为FTP在传输档案时,每一个档案都必须开启一个socket来传输,但关闭socket需要一段时间,如果传输速度很快,而档案又多,则同一时间所开启的socket会超过原本系统所许可的值,这时我们就必须把这个值调大一点。
除了FTP外,也许有其它网络程序也会有这种问题。
然而,这个值必须在系统一开机就设定好,所以如果要修改这项设定,我们必须修改/boot/loader.conf才行kern.ipc.maxsockets="16424"####################################kern.ipc.nsfbufs:
1456经常使用sendfile
(2)系统调用的繁忙的服务器,有必要通过NSFBUFS内核选项或者在/boot/loader.conf(查看loader(8)以获得更多细节)中设置它的值来调节sendfile
(2)缓存数量。
这个参数需要调节的普通原因是在进程中看到sfbufa状态。
sysctlkern.ipc.nsfbufs变量在内核配置变量中是只读的。
这个参数是由kern.maxusers决定的,然而它可能有必要因此而调整。
在/boot/loader.conf里加入kern.ipc.nsfbufs="2496"####################################kern.maxusers:
59maxusers的值决定了处理程序所容许的最大值,20+16*maxusers就是你将得到的所容许处理程序。
系统一开机就必须要有18个处理程序(process),即便是简单的执行指令man又会产生9个process,所以将这个值设为64应该是一个合理的数目。
如果你的系统会出现proctablefull的讯息的话,可以就把它设大一点,例如128。
除非您的系统会需要同时开启很多档案,否则请不要设定超过256。
可以在/boot/loader.conf中加入该选项的设定,kern.maxusers=256####################################kern.coredump:
1如果设置为0,则程序异常退出时不会生成core文件,作为服务器,不建议这样。
####################################kern.corefile:
%N.core可设置为kern.corefile="/data/coredump/%U-%P-%N.core"其中%U是UID,%P是进程ID,%N是进程名,当然/data/coredump必须是一个实际存在的目录####################################vm.swap_idle_enabled:
0vm.swap_idle_threshold1:
2vm.swap_idle_threshold2:
10#########################在有很多用户进入、离开系统和有很多空闲进程的大的多用户系统中很有用。
可以让进程更快地进入内存,但它会吃掉更多的交换和磁盘带宽。
系统默认的页面调度算法已经很好了,最好不要更改。
########################vfs.ufs.dirhash_maxmem:
2097152#########################默认的dirhash最大内存,默认2M增加它有助于改善单目录超过100K个文件时的反复读目录时的性能建议修改为33554432(32M)#############################vfs.vmiodirenable:
1#################这个变量控制目录是否被系统缓存。
大多数目录是小的,在系统中只使用单个片断(典型的是1K)并且在缓存中使用的更小(典型的是512字节)。
当这个变量设置为关闭(0)时,缓存器仅仅缓存固定数量的目录,即使您有很大的内存。
而将其开启(设置为1)时,则允许缓存器用VM页面缓存来缓存这些目录,让所有可用内存来缓存目录。
不利的是最小的用来缓存目录的核心内存是大于512字节的物理页面大小(通常是4k)。
我们建议如果您在运行任何操作大量文件的程序时保持这个选项打开的默认值。
这些服务包括web缓存,大容量邮件系统和新闻系统。
尽管可能会浪费一些内存,但打开这个选项通常不会降低性能。
但还是应该检验一下。
####################vfs.hirunningspace:
1048576############################这个值决定了系统可以将多少数据放在写入储存设备的等候区。
通常使用默认值即可,但当我们有多颗硬盘时,我们可以将它调大为4MB或5MB。
注意这个设置成很高的值(超过缓存器的写极限)会导致坏的性能。
不要盲目的把它设置太高!
高的数值会导致同时发生的读操作的迟延。
#############################vfs.write_behind:
1#########################这个选项预设为1,也就是打开的状态。
在打开时,在系统需要写入数据在硬盘或其它储存设备上时,它会等到收集了一个cluster单位的数据后再一次写入,否则会在一个暂存区空间有写入需求时就立即写到硬盘上。
这个选项打开时,对于一个大的连续的文件写入速度非常有帮助。
但如果您遇到有很多行程延滞在等待写入动作时,您可能必须关闭这个功能。
############################net.local.stream.sendspace:
8192##################################本地套接字连接的数据发送空间建议设置为65536###################################net.local.stream.recvspace:
8192##################################本地套接字连接的数据接收空间建议设置为65536###################################net.inet.ip.portrange.lowfirst:
1023net.inet.ip.portrange.lowlast:
600net.inet.ip.portrange.first:
49152net.inet.ip.portrange.last:
65535net.inet.ip.portrange.hifirst:
49152net.inet.ip.portrange.hilast:
65535###################以上六项是用来控制TCP及UDP所使用的port范围,这个范围被分成三个部份,低范围、预设范围、及高范围。
这些是你的服务器主动发起连接时的临时端口的范围,预设的已经1万多了,一般的应用就足够了。
如果是比较忙碌的FTPserver,一般也不会同时提供给1万多人访问的,当然如果很不幸,你的服务器就要提供很多,那么可以修改first的值,比如直接用1024开始#########################net.inet.ip.redirect:
1#########################设置为0,屏蔽ip重定向功能###########################net.inet.ip.rtexpire:
3600net.inet.ip.rtminexpire:
10########################很多apache产生的CLOSE_WAIT状态,这种状态是等待客户端关闭,但是客户端那边并没有正常的关闭,于是留下很多这样的东东。
建议都修改为2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 用Sysctl 调整Linux操作系统的性能 Sysctl 调整 Linux 操作系统 性能