用来增加发送缓冲区的大小而不用吃掉更多的内核内存 。注意路由表(参见
route(8))能用于与路由相关的发送和接收缓冲去的缺省大小 。另外一
个工具是你能用防火墙规则中的管道(pipe)限制从某个IP地址或端口区出去
或进来的流量 。
例如,如果你有T1线路,你可能想要限制web流量为整个T1线路的70%而把余
下的带宽留给mail和交互方式的使用 。通常一个被繁忙地访问的web服务器
不会显著的增加对其他服务的时延,但是强制这个限制能使事情更加光滑导
致更长时间的稳定 。为了确信不使用太多的带宽,许多人也人为地强制带宽
限制 。
除非双方主机支持TCP的窗口伸缩扩展,把TCP发送和接收缓冲区定为大于65535
将导致魔术般的性能提升,窗口伸缩由net.inet.tcp.rfc1323控制 。这个
扩展应该被使能并且为了在一些网络链路上获得好的性能,TCP缓冲区大小
应该设置为大于65536,特别是千兆广域网和高时延的卫星链路 。
我们建议你打开这个开关(设置为1)并且让net.inet.tcp.always_keepalive
也设置为1 。缺省是off的 。这增加了一些网络带宽的使用,但是一些死掉的
连接最终能被识别并清除 。死的TCP连接是被拨号用户存取的系统的一个特别
的问题,因为用户经常断开modem而不正确的关闭活动的连接 。
kern.ipc.somaxconn限制接收TCP连接的侦听队列(listen queue)的大小 。缺省
是128,这对在一个繁忙的web服务器环境中可靠的处理新的连接来说太小了 。
在那样的环境中,我们建议增加这个值调到1024或更高 。服务进程可能自己限
制侦听队列的长度(例如sendmail(8),apache)但是总会有一个配置项在配置文件
中允许你调整队列的大小 。大的侦听队列也能更好的抵挡Dos攻击 。
kern.maxfiles决定系统支持打开多少个文件 。缺省的是几千个但如果你在运行
数据库或大的很吃描述符的进程可以把它设到1万或2万个 。
vm.swap_idle_enabled在大的多用户系统中是很有用的,那里有大量的用户进
入和离开系统而且有大量的空闲进程 。那种系统趋势是对于空闲内存的保留上产
生大量持续的压力 。打开这个功能调整换出(空闲秒数) 。通过vm.swap_idle_
threhold1和vm.swap_idle_threshold2允许你以比普通换出算法更快的速度降
低与空闲进程联系着的页面的优先级 。这等于帮了换出守护进程(pageout
daemon)一把 。不要打开这个选项,除非你需要它,因为你在做的交易是预先
而不是后来吃掉更多的交换空间和磁盘带宽 。在一个小系统上这个选项有影响
而在一个已经发生换页的大系统上这个选项允许VM系统更加容易地把整个进程
换出或换如内存 。
BOOT-TIME SYSCTL TUNING
有些sysctl在运行时是不能调整的因为内存申请必须在引导的早期进行 。要改
变这些sysctl,你必须把这些值放在loader.conf(5)并且重新启动系统 。
kern.maxusers缺省值是难以相信的低 。对于现在大多数机器,你可能需要增
加这个值到64,128或256 。我们不建议你超过256除非你需要一个巨大的文件
描述符数量 。网络缓冲区也将被影响但是可以由另外的内核选项来控制 。不要
只是使用maxusers来增加网络mbuf 。比FreeBSD4.4旧的系统没有这个sysctl需
要使用内核配置选项maxusers来设置 。
kern.ipc.nmbclusters可以调整用来增加系统愿意申请的网络mbuf的数量 。每
个cluster(簇)大概2K的内存,所以值1024代表保留2M内核内存作为网络缓冲区 。
你可以简单的计算出需要多少 。如果你有一个web服务器最多可以有1000个并发
连接,每个连接吃掉16K接收和发送缓冲区,你大概需要32MB的网络缓冲区来对
推荐阅读
- 89 FreeBSD连载:CGI和SSI的安全性
- FreeBSD集群软件
- FreeBSD ports中make可带有的参数
- 制作U盘启动的RAMDISK为根目录的FREEBSD完全版
- 葡萄苗春季病虫害如何防治
- 如何把梳子上的头发弄下来
- 如何组装手机 这样做
- 93 FreeBSD连载:反向代理负载均衡
- 1 用FreeBSD构建家庭网络世界
- FreeBSD下的系统性能调优