搭建一个大型网站架构的实验环境(FreeBSD系统优化篇)2007/12/28 16:33四、FreeBSD系统的优化
升级完了ports和src后,基础搭建就算完成了,现在我们就开始编译内核吧。
进入内核配置文件目录
# cd /usr/src/sys/i386/conf
# mkdir /root/kernels
# cp GENERIC /root/kernels/IM.RD.BJ
# ln -s /root/kernels/IM.RD.BJ
IM.RD.BJ为你新内核配置文件的名字 ,可以自己取个合适的。
编译内核
# cd /usr/src
# make buildkernel KERNCONF=IM.RD.BJ
安装内核
# make installkernel KERNCONF=IM.RD.BJ
编译内核之前可以配置自己的内核文件 IM.RD.BJ ,使她符合自己的要求。
具体的内核说明可以参考:
具体的内核配置文件可以参照我的另外一篇文章《Freebsd6.2 编译安装内核》。
编译完成以后,我们现在的工作就是对系统一些参数进行优化调整。
# ee /boot/loader.conf
加入:
kern.ipc.maxsockets=65535
kern.maxusers=256
kern.ipc.nmbclusters=32768
kern.ipc.nsfbufs=2496
# ee /etc/sysctl.conf
加入:
net.inet.ip.sourceroute=0
net.inet.ip.accept_sourceroute=0
net.inet.tcp.drop_synfin=1
kern.maxvnodes=8446
kern.maxfiles=65536
kern.maxfilesperproc=32768
kern.ipc.somaxconn=32768
kern.ipc.shmmax=67108864 # 64MB
kern.ipc.shmall=32768
kern.ipc.shm_allow_removed=0
kern.coredump=1
net.inet.ip.portrange.last=65535
net.inet.tcp.msl=2500
net.inet.udp.blackhole=1
net.inet.udp.log_in_vain=1
net.inet.tcp.always_keepalive=1
net.inet.udp.blackhole=1
net.inet.raw.maxdgram=65536
net.inet.raw.recvspace=65536
net.inet.tcp.blackhole=2
net.inet.tcp.delayed_ack=1
net.inet.tcp.inflight.enable=1
net.inet.tcp.inflight.debug=0
net.inet.tcp.inflight.rttthresh=10
net.inet.tcp.inflight.min=6144
net.inet.tcp.inflight.max=1073725440
net.inet.tcp.inflight.stab=20
net.local.stream.sendspace=65536
net.local.stream.recvspace=65536
net.inet.tcp.sendspace=32768
net.inet.tcp.recvspace=65536
net.inet.udp.maxdgram=24576
net.inet.udp.recvspace=49152
net.inet.ip.rtexpire=3600
net.inet.ip.rtminexpire=2
net.inet.ip.random_id=1
net.inet.icmp.icmplim=100
net.inet.icmp.icmplim_output=1
net.inet.icmp.drop_redirect=1
net.inet.icmp.log_redirect=1
net.inet.tcp.keepidle=600000
net.inet.ip.redirect=0
net.isr.direct=1
net.inet.ip.intr_queue_maxlen=4096
kern.ipc.shm_use_phys=1
net.inet.ip.fastforwarding=1
vfs.hirunningspace=4194304
vfs.ufs.dirhash_maxmem=33554432 # 32MB
vfs.write_behind=0
security.bsd.see_other_uids=1
security.bsd.see_other_gids=1
设置完成以后reboot机器。
如果要不重启机器加载改动的参数还可以使用:
# /etc/rc.d/sysctl reload
参数设置的具体说明可以参考《中国最完整的sysctl.conf优化方案》,很详细,在此感谢剑心通明的分享。
好了,参数优化好了以后,我们现在还要考虑到以后要用ports方式安装软件,这些软件都是以源码形式安装的, 所以我们这里得做两方面的优化工作,第一是优化编译器,也就是GCC的编译指令,这样可以提高软件的效率,第二就是为ports下载软件加加速了。
系统安装完成之后,默认是没有make.conf文件的,我们自己新建一个就可以了。(自力更生,丰衣足食,哈!)
首先我们调整一下GCC的编译参数。
# touch /etc/make.conf
# ee /etc/make.conf
加入:
CFLAGS= -march=pentium-m -O2 -pipe -msse2 -mmmx -mfpmath=sse
CXXFLAGS= ${CFLAGS}
其中-march是指你机器的CPU,不知道CPU型号可以用下面的方法来查,我的是IBMT43,结果如下:
# sysctl hw.model
hw.model: Intel(R) Pentium(R) M processor 1.86GHz
以下是对照表,按照你的CPU型号改就OK了(这里只提供了CPU的对照,没有加上参数,网上有很多加好参数的,其实未必适合,所以大家看看这篇文章,自己加吧,这样放心,错了也知道原因。参考金步国的《GCC编译优化指南》)。
i386 (Intel)
CFLAGS= -march=i386
CXXFLAGS+= -march=i386
i486 (Intel)
CFLAGS= -march=i486
CXXFLAGS+= -march=i486
Pentium 1 (Intel)
CFLAGS= -march=pentium
CXXFLAGS+= -march=pentium
Pentium MMX (Intel)
CFLAGS= -march=pentium-mmx
CXXFLAGS+= -march=pentium-mmx
Pentium PRO (Intel)
CFLAGS= -march=pentiumpro
CXXFLAGS+= -march=pentiumpro
Pentium II (Intel)
CFLAGS= -march=pentium2
CXXFLAGS+= -march=pentium2
Celeron (Mendocino), aka Celeron1 (Intel)
CFLAGS= -march=pentium2
CXXFLAGS+= -march=pentium2
Pentium III (Intel)
CFLAGS= -march=pentium3
CXXFLAGS+= -march=pentium3
Celeron (Coppermine) aka Celeron2 (Intel)
CFLAGS= -march=pentium3
CXXFLAGS+= -march=pentium3
Celeron (Willamette?) (Intel)
CFLAGS= -march=pentium4
CXXFLAGS+= -march=pentium4
Pentium 4 (Intel)
CFLAGS= -march=pentium4
CXXFLAGS+= -march=pentium4
Eden C3/Ezra (Via)
CFLAGS= -march=i586 -m3dnow
CXXFLAGS+= -march=i586 -m3dnow
K6 (AMD)
CFLAGS= -march=k6
CXXFLAGS+= -march=k6
K6-2 (AMD)
CFLAGS= -march=k6-2
CXXFLAGS+= -march=k6-2
K6-3 (AMD)
CFLAGS= -march=k6-3
CXXFLAGS+= -march=k6-3
Athlon (AMD)
CFLAGS= -march=athlon
CXXFLAGS+= -march=athlon
Athlon-tbird, aka K7 (AMD)
CFLAGS= -march=athlon-tbird
CXXFLAGS+= -march=athlon-tbird
Athlon-tbird XP (AMD)
CFLAGS= -march=athlon-xp
CXXFLAGS+= -march=athlon-xp
Athlon 4(AMD)
CFLAGS= -march=athlon-4
CXXFLAGS+= -march=athlon-4
Athlon XP (AMD)
CFLAGS= -march=athlon-xp
CXXFLAGS+= -march=athlon-xp
Athlon MP (AMD)
CFLAGS= -march=athlon-mp
CXXFLAGS+= -march=athlon-mp
接着我们来调整ports的下载,这几个网站比较快,也是大多数网友推荐的:
MASTER_SITE_OVERRIDE?=\
{ DIST_SUBDIR }/\
{ DIST_SUBDIR }/\
{ DIST_SUBDIR }/
MASTER_SITE_OVERRIDE?=${ MASTER_SITE_BACKUP }
最后我们的ports也来玩玩多线程下载,有请axel出场了! 咚咚咚...
不知道axel在ports的那个位置,可以用下面指令找找:
# cd /usr/ports
# make search key=axel
Port: axel-1.0b
Path: /usr/ports/ftp/axel
Info: A download accelerator
Maint:
B-deps: gettext-0.14.5_2 gmake-3.81_1 libiconv-1.9.2_2
R-deps: gettext-0.14.5_2 libiconv-1.9.2_2
WWW:
其实还有一个更方便的方法就是whereis
# whereis axel
axel: /usr/ports/ftp/axel
现在我们知道位置在那了,就去找她吧,小样,你藏的再深,俺也能把你找出来,我搜搜搜,查查查...
# cd /usr/ports/ftp/axel
# make install clean
等待她安装完成吧,因为她还要安装一些依赖包,可能会慢一点,耐心等待吧,或出去咪根烟也行(抽烟不好,在这还是不推荐了,还是站起来活动一下,看看绿色,这样环保又健康。毛爷爷告诉我们:“身体是革命的本钱”,对于IT从业者更是如此呀,感慨!!!)
安装完成以后,我们得设置一下,她才能为我们工作,还是到make.conf进行设置。
# ee /etc/make.conf
加入:
FETCH_CMD=axel
FETCH_BEFORE_ARGS= -n 10 -a
FETCH_AFTER_ARGS=
DISABLE_SIZE=yes
来自这里
一缕阳光的博客!!
阅读(613) | 评论(0) | 转发(0) |