中国最完整的sysctl.conf优化方案(ZT)
分类:LINUX杂记评论:0条作者:雨尚日期:2011-12-29
网上关于sysctl.conf的优化方案有各种版本,大多都是抄来抄去的,让新人看了很迷茫。为解决此问题,经过两天的整理,查了N多资料,将大家常用的总结如下,很多默认的不需要修改的暂未涉及,今后将逐步把所有的项目都有个翻译、讲解、修改建议,如有修改,将以此文为准,其他地方的内容,本人不负责更新。因此转载请注明链接地址:http://www.bsdlover.cn/html/38/n-138.html如果您有补充或修订意见,请于本文后评论或邮件联系cujxtm@gmail.com,万分感谢!
################### 所有rfc相关的选项都是默认启用的,因此网上的那些还自己写rfc支持的都可以扔掉了:) ############################### net.inet.ip.sourceroute=0 net.inet.ip.accept_sourceroute=0 ############################# 通过源路由,攻击者可以尝试到达内部IP地址 --包括RFC1918中的地址,所以 不接受源路由信息包可以防止你的内部网络被探测。 ################################# net.inet.tcp.drop_synfin=1 ################################### 安全参数,编译内核的时候加了options TCP_DROP_SYNFIN才可以用,可以阻止某些OS探测。 ################################## kern.maxvnodes=8446 #################http://www.bsdlover.cn######### vnode 是对文件或目录的一种内部表达。 因此, 增加可以被操作系统利用的 vnode 数量将降低磁盘的 I/O。 一般而言, 这是由操作系统自行完成的,也不需要加以修改。但在某些时候磁盘 I/O 会成为瓶颈, 而系统的 vnode 不足, 则这一配置应被增加。此时需要考虑是非活跃和空闲内存的数量。 要查看当前在用的 vnode 数量: # sysctl vfs.numvnodes vfs.numvnodes: 91349 要查看最大可用的 vnode 数量: # sysctl kern.maxvnodes kern.maxvnodes: 100000 如果当前的 vnode 用量接近最大值,则将 kern.maxvnodes 值增大 1,000 可能是个好主意。 您应继续查看 vfs.numvnodes 的数值, 如果它再次攀升到接近最大值的程度, 仍需继续提高 kern.maxvnodes。 在 top(1) 中显示的内存用量应有显著变化, 更多内存会处于活跃 (active) 状态。 #################################### kern.maxproc: 964 #################http://www.bsdlover.cn######### Maximum number of processes #################################### kern.maxprocperuid: 867 #################http://www.bsdlover.cn######### Maximum processes allowed per userid #################################### 因为我的maxusers设置的是256,20+16*maxusers=4116。 maxprocperuid至少要比maxproc少1,因为init(8) 这个系统程序绝对要保持在运作状态。 我给它设置的2068。 kern.maxfiles: 1928 #################http://www.bsdlover.cn######### 系统中支持最多同时开启的文件数量,如果你在运行数据库或大的很吃描述符的进程,那么应该设置在20000以上, 比如kde这样的桌面环境,它同时要用的文件非常多。 一般推荐设置为32768或者65536。 #################################### kern.argmax: 262144 #################http://www.bsdlover.cn######### maximum number of bytes (or characters) in an argument list. 命令行下最多支持的参数,比如你在用find命令来批量删除一些文件的时候 find . -name "*.old" -delete,如果文件数超过了这个数字,那么会提示你数字太多的。 可以利用find . -name "*.old" -ok rm {} \;来删除。 默认的参数已经足够多了,因此不建议再做修改。 #################################### kern.securelevel: -1 #################http://www.bsdlover.cn######### -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 #################http://www.bsdlover.cn######### 每个进程能够同时打开的最大文件数量,网上很多资料写的是32768 除非用异步I/O或大量线程,打开这么多的文件恐怕是不太正常的。 我个人建议不做修改,保留默认。 #################################### kern.ipc.maxsockbuf: 262144 #################http://www.bsdlover.cn######### 最大的套接字缓冲区,网上有建议设置为2097152(2M)、8388608(8M)的。 我个人倒是建议不做修改,保持默认的256K即可,缓冲区大了可能造成碎片、阻塞或者丢包。 #################################### kern.ipc.somaxconn: 128 #################http://www.bsdlover.cn######### 最大的等待连接完成的套接字队列大小,即并发连接数。 高负载服务器和受到Dos攻击的系统也许会因为这个队列被塞满而不能提供正常服务。 默认为128,推荐在1024-4096之间,根据机器和实际情况需要改动,数字越大占用内存也越大。 #################################### kern.ipc.nmbclusters: 4800 #################http://www.bsdlover.cn######### 这个值用来调整系统在开机后所要分配给网络 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 #################http://www.bsdlover.cn######### 共享内存和信号灯("System VIPC")如果这些过小的话,有些大型的软件将无法启动 安装xine和mplayer提示的设置为67108864,即64M, 如果内存多的话,可以设置为134217728,即128M #################################### kern.ipc.shmall: 8192 #################http://www.bsdlover.cn######### 共享内存和信号灯("System VIPC")如果这些过小的话,有些大型的软件将无法启动 安装xine和mplayer提示的设置为32768 #################################### kern.ipc.shm_use_phys: 0 #################http://www.bsdlover.cn######### 如果我们将它设成 1,则所有 System V 共享内存 (share memory,一种程序间沟通的方式)部份都会被留在实体的内存 (physical memory) 中, 而不会被放到硬盘上的 swap 空间。我们知道物理内存的存取速度比硬盘快许多,而当物理内存空间不足时, 部份数据会被放到虚拟的内存上,从物理内存和虚拟内存之间移转的动作就叫作 swap。如果时常做 swap 的动作, 则需要一直对硬盘作 I/O,速度会很慢。因此,如果我们有大量的程序 (数百个) 需要共同分享一个小的共享内存空间, 或者是共享内存空间很大时,我们可以将这个值打开。 这一项,我个人建议不做修改,除非你的内存非常大。 #################################### kern.ipc.shm_allow_removed: 0 #################http://www.bsdlover.cn######### 共享内存是否允许移除?这项似乎是在fb下装vmware需要设置为1的,否则会有加载SVGA出错的提示 作为服务器,这项不动也罢。 #################################### kern.ipc.numopensockets: 12 #################http://www.bsdlover.cn######### 已经开启的socket数目,可以在最繁忙的时候看看它是多少,然后就可以知道maxsockets应该设置成多少了。 #################################### kern.ipc.maxsockets: 1928 #################http://www.bsdlover.cn######### 这是用来设定系统最大可以开启的 socket 数目。如果您的服务器会提供大量的 FTP 服务, 而且常快速的传输一些小档案,您也许会发现常传输到一半就中断。因为 FTP 在传输档案时, 每一个档案都必须开启一个 socket 来传输,但关闭 socket 需要一段时间,如果传输速度很快, 而档案又多,则同一时间所开启的 socket 会超过原本系统所许可的值,这时我们就必须把这个值调大一点。 除了 FTP 外,也许有其它网络程序也会有这种问题。 然而,这个值必须在系统一开机就设定好,所以如果要修改这项设定,我们必须修改 /boot/loader.conf 才行 kern.ipc.maxsockets="16424" #################################### kern.ipc.nsfbufs: 1456 #################http://www.bsdlover.cn######### 经常使用 sendfile(2) 系统调用的繁忙的服务器, 有必要通过 NSFBUFS 内核选项或者在 /boot/loader.conf (查看 loader(8) 以获得更多细节) 中设置它的值来调节 sendfile(2) 缓存数量。 这个参数需要调节的普通原因是在进程中看到 sfbufa 状态。sysctl kern.ipc.nsfbufs 变量在内核配置变量中是只读的。 这个参数是由 kern.maxusers 决定的,然而它可能有必要因此而调整。 在/boot/loader.conf里加入 kern.ipc.nsfbufs="2496" #################################### 继续阅读...

最新评论
今天有空就来看看你的站»
Post: 2012-04-29 20:03:15这个脚本不错,来学习下»
Post: 2012-04-11 03:37:35来看看你的博客,有空也去»
Post: 2012-04-07 20:04:03Great articl»
Post: 2012-02-24 05:58:40Noarmlly I'm»
Post: 2012-02-24 05:56:32Why does thi»
Post: 2012-02-24 05:52:00That's a qui»
Post: 2012-02-24 05:50:44Well macamdi»
Post: 2012-02-24 05:50:36Yours is a c»
Post: 2012-02-24 05:31:50These tpocis»
Post: 2012-02-24 05:09:11