中国最完整的sysctl.conf优化方案( 二 )


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 , 速度会很慢 。因此 , 如果我们有大量的程序 (数百个) 需要共同分享一个小的共享内存空间 ,

推荐阅读