分享FreeBSD 8.0的十四条优化策略

标签: 分享 freebsd 十四 | 发表时间:2014-03-09 22:51 | 作者:aigo
出处:http://www.iteye.com

原文: http://os.51cto.com/art/201006/207092_all.htm

【51CTO独家特稿】笔者目前是一位外企linux/unix系统工程师与项目实施工程师,而FreeBSD一直作为我们企业内部的开发服务器,具有稳定和高效的特点。本文根据笔者经验总结了十四条FreeBSD的优化策略。如无其它,以下所指FreeBSD均指FreeBSD 8.0_release。

推荐专题: 企业内网开发环境部署与管理全攻略(FreeBSD+PHP)

一、提高ports安装速度

FreeBSD中的ports安装工具默认工具是用fetch,下载时经常出现龟速现象。为了提高ports安装速度,我推荐axel工具。相关make.conf文件配置步骤如下:

  1. cd /usr/ports/ftp/axel  
  2. make install  
  3. #修改/et/make.conf  
  4. vi /etc/make.conf  
  5. #加入以下内容  
  6. FETCH_CMD=axel  
  7. FETCH_BEFORE_ARGS= -n 10 -a  
  8. FETCH_AFTER_ARGS=  
  9. DISABLE_SIZE=yes  
  10. MASTER_SITE_OVERRIDE?=\  
  11. http://ports.hshh.org/${DIST_SUBDIR}/\  
  12. http://ports.cn.freebsd.org/${DIST_SUBDIR}/\  
  13. ftp://ftp.freeBSDchina.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/  
  14. MASTER_SITE_OVERRIDE?=${MASTER_SITE_BACKUP}   

以上路径是为了用速度比较快的网站代替程序默认的下载源,达到加速的目的。配置成功后,享受axel带来的极速快感吧。

二、安装vim编辑器

工欲善其事,必先利其器。用了段时间后的FreeBSD,居然发现没有vim,我还是习惯使用Linux下的vim,先安装vim后再工作吧。安装方法如下:

①如果安装了X Windows

  1. cd /usr/ports/editors/vim6 
  2. make install   

②如果没安装X Windows,则可安装vim7.2+ruby,Ruby是一门面向对象的服务器脚步语言,相当与Perl。

  1. cd /usr/ports/editors/vim6+ruby  
  2. make -DWITHOUT_X11 install clean   

③还可采用pkd_add的方式安装

pkg_add -r -v vim-lite

成功安装完vim后配置下vim,让其有语法检查及颜色显示等功能。

  1. #echo "syntax on">>/root/.vimrc  
  2. #echo "alias vi vim" >>/root/.cshrc   

三、配置远程连接工具

我使用的远程连接工具是Xmanager3.0企业版,因为习惯了Linux的颜色显示,这里将其改成与linux一致:

  1. #vim /etc/csh.cshrc   
  2. #加入如下  
  3. setenv LSCOLORS ExGxFxdxCxegedabagExEx  
  4. setenv CLICOLOR yes  
  5. source /etc/csh.cshrc   

 

四、列出无法补齐的候选文件

想要让FreeBSD的csh像bash那样按tab列出无法补齐的候选文件,标准的方法是按Ctrl+D。但如果一定要用tab的话,在/etc/csh.cshrc中加入:

set autolist

五、使用portsnap升级port的目录树

我们使用portsnap,首先要设置一下它的配置文件/etc/portsnap.conf:

  1. [root@bsd01 /usr/ports]# vi /etc/portsnap.conf   

把SERVERNAME=portsnap.freebsd.org

修改成:

SERVERNAME=portsnap.hshh.org

在你的freebsd首次使用portsnap必须执行下面2步:

  1. [root@bsd01 ~]# portsnap fetch  
  2. [root@bsd01 ~]# portsnap extract   

这2步可以合成使用:

  1. [root@bsd01 ~]# portsnap fetch extract   

portsnap fecth是从网上获取portsnap快照的最新压缩包,听闻这个压缩包官方每小时更新一次。

portsnap extract 则是把这个压缩包创立到/usr/ports。哪怕你以前已经手工安装了ports,他也会重新创立一次。

以后更新,只需要执行下面2步:

  1. [root@bsd01 ~]# portsnap fetch  
  2. [root@bsd01 ~]# portsnap update   

这2步可以合成使用:

  1. [root@bsd01 ~]# portsnap fetch update   

portsnap第一次运行extract命令时,可能需要一段时间,以后更新使用update的时候,速度就块很多了。

六、系统内核级优化+防止ddos

根据某位unix前辈的观点:本来就很好,加加更健康。加载文件修改方法如下:

  1. # vim /boot/loader.conf加入如下文本  
  2. kern.dfldsiz="2147483648"              
  3. kern.maxdsiz="2147483648"               
  4. kern.ipc.nmbclusters="0"              
  5. kern.ipc.nsfbufs="66560"           

解释:

a、第一、二行主要是为了突破1G内存设置的。

b、第三行其实是bsd的一个bug,当系统并发达到一个数量级的时候,系统会crash,这个是非常糟糕的事情。所幸更改了这个参数后,在高并发的时候,基本可以没有类似情况,当然非常bt的情况,还得进一步想办法。

c、第四行是读取的文件数,如果你下载的文件比较大,且比较多,加大这个参数,是非常爽的。

Sysctl修改方法如下:

  1. #vi /etc/rc.local  
  2. sysctl kern.ipc.maxsockets=100000    ##增加并发的socket,对于ddos很有用  
  3. sysctl kern.ipc.somaxconn=65535      ##打开文件数  
  4. sysctl net.inet.tcp.msl=2500         ##timeout时间   

 

七、FreeBSD的pf防火墙

众所周知,FreeBSD的ipfw是移植自OPENBSD的防火墙,其强大我这里就不多说了。因为其用途主要用于内部开发,所以我这里就是关闭了防火墙,pfctl -d。在对外实施项目的过程中发现,Linux下的iptables及FreeBSD的ipfw均不可能防DDOS攻击,所以在安全方面我就转向于硬件防火墙,而将iptables和ipfw主要用于内网NAT路由器这块。

这里简单介绍下ipfw的语法吧:

pfctl -e                 #启动ipfw防火墙 
pfctl -d                 #停止ipfw防火墙 
pfctl -sa | grep Status  #查看状态 
pfctl -f /etc/pf.conf    #载入 pf.conf 文件  
pfctl -nf /etc/pf.conf   #检查配置文件错误,但不载入  
pfctl -Nf /etc/pf.conf   #只载入文件中的NAT规则  
pfctl -Rf /etc/pf.conf   #只载入文件中的过滤规则  
pfctl -sn    #显示当前的NAT规则  
pfctl -sr    #显示当前的过滤规则  
pfctl -ss    #显示当前的状态表  
pfctl -si    #显示过滤状态和计数  
pfctl -sa    #显示任何可显示的 
pfctl -t http_table -T show             #查看动态表 
pfctl -t http_table -T add 192.168.1.X    #添加一个IP到表 
pfctl -t http_table -T del 192.168.1.X    #从表中删除IP   

八、运行新安装的命令

FreeBSD 8.0的cshell会缓存环境变量PATH中指定的目录里的可执行文件,以加快查找速度,这会造成一些新安装的命令无法运行,最典型的例子就是刚安装的vim居然提示找不到命令。用如下命令解决问题:

rehash

感觉此习惯跟linux下用locate查找某文件比较类似。linux下一般也会在安装前软件后用updatedb来更新文件最新数据库,然后用locate命令令其生效。

九、进行安全的远程登录

很多人会修改/etc/ssh/sshd_config文件,以便让root远程登陆FreeBSD服务器,但这样做是极不安全的,建议还是添加一个wheel组的用户,然后再su – root更为安全。

  1. PermitRootLogin yes        #允许root登录  
  2. PermitEmptyPasswords no    #不允许空密码登录  
  3. PasswordAuthentication yes  #设置是否使用口令验证   

 

十、检查网络流量是否异常

如果你感觉你的网络流量异常,可采用如下方法来检查排障:

systat -if 1

1表示1秒刷新屏幕一次,Traffic流量平均值,peak 峰值,total流量总值,很实用的命令;缺省情况下systat是报告处理器的使用率,包括总利用状态、空闲使用率和各个进程的使用率。通过指定参数,systat也能进行I/O的统计、虚存的统计、网络的统计等。

十一、查看FreeBSD服务器的一些基础情况和信息

①查看CPU:

  1. sysctl hw.model hw.ncpu  
  2. dmesg | grep "CPU:"   

②查看内存:

  1. dmesg | grep "real memory" | awk -F '[( )]' '{print $2,$4,$7,$8}'   

查看swap:

  1. top | grep "Swap:" | awk '{print $1,$2}'   

③查看硬盘:

  1. diskinfo -vt /dev/ad0   

④看硬盘大小及硬件使用情况:

  1. dmesg | grep "sector" | awk '{print $1,$2}'  
  2. df -h   

⑤查看服务器品牌:

  1. dmesg | grep "ACPI APIC"   

⑥查看系统内核,命令跟Linux下一样:

  1. uname -a  
  2. mail# uname -a  
  3. FreeBSD mail.cn7788.com 8.0-RELEASE FreeBSD 8.0-RELEASE #0: Sat Nov 21 15:48:17 UT  

十二、关于Linux二进制兼容模式

许多公司和开发人员只为Linux开发程序,因为这是目前计算机世界最热门的技术;这时FreeBSD能够做什么呢,答案就是使用FreeBSD所提供的Linux二进制兼容性,方法是:

  1. kldstat linux   

让Linux兼容在系统初始化自动启动,在/etc/rc.conf中加入

  1. linux_enable="YES"  

检查KLD模块是否加载:

  1. mail# kldstat   
  2. Id Refs Address    Size     Name  
  3.  1    1 0xc0400000 b6dfe0   kernel   

如果您不想或者无法将Linux KLD加载,您就需要在内核中静态链接进Linux二进制兼容性模式。您必须在您的内核配置文件里面加入options COMPAT_LINUX,然后重新编译内核。

十三、有关于FreeBSD的网络配置

虽然sysinstall也能修改主机的网络相关,但修改完网卡的相关参数后sysinstall会提示Would you liketo bring the le0 interface up right now?(你想让le0生效吗?)但我兴冲冲的执行此步后,发现新改的网卡参数并没重新重奖;所以我建议修改/etc/rc.conf文件后用命令使其立即生效。

  1. vim /etc/rc.conf  
  2. hostname="mail.bolaninfo.com" 
  3. ifconfig_le0="inet 192.168.1.108 netmask 255.255.255.0" 
  4. defaultrouter="192.168.1.1" 
  5. #defaultrouter是网关地址   

修改后需要让修改立即生效。这里不建议reboot服务器,有个小技巧与大家分享下,即

  1. sh /etc/rc   

测试修改defaultroute="192.168.1.103",然后sh /etc/rc,最后用命令测试了,大家注意下Gateway这行,即改动生效了。



 

域名解析DNS配置如下

  1. #vim /etc/resolv.conf  
  2. nameserver 210.5.4.116  
  3. nameserver 210.51.176.71   

另外这里稍为解释下名字解析hosts,它的执行顺序是优于DNS,现阶段多用于集群环境,如DRDB+Heartbeat,配置过程如下

  1. #vim /etc/hosts  
  2. 192.168.1.100 HA1  
  3. 192.168.1.101 HA2   

十四、LVS脚本

在用Freebsd作LVS后端的web集群时,发现用其作的lvs脚本比linux简单多了,尤其是arp抑制。脚本如下:

  1. mail# vim /usr/local/bin/lvs_real_bsd   
  2. #!/usr/local/bin/bash  
  3. #description : start realserver  
  4. VIP=192.168.1.188 
  5. case "$1" in 
  6. start)  
  7. echo " start LVS of REALServer" 
  8. /sbin/ifconfig lo0 $VIP netmask 255.255.255.255 alias -arp up  
  9. ;;  
  10. stop)  
  11. /sbin/ifconfig lo0 alias down  
  12. echo "close LVS Directorserver" 
  13. /sbin/ifconfig lo0 127.0.0.1 arp up  
  14. ;;  
  15. *)  
  16. echo "Usage: $0 {start|stop}" 
  17. exit 1 
  18. esac 


已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [分享 freebsd 十四] 推荐:

分享FreeBSD 8.0的十四条优化策略

- - 操作系统 - ITeye博客
原文: http://os.51cto.com/art/201006/207092_all.htm. 【51CTO独家特稿】笔者目前是一位外企linux/unix系统工程师与项目实施工程师,而FreeBSD一直作为我们企业内部的开发服务器,具有稳定和高效的特点. 本文根据笔者经验总结了十四条FreeBSD的优化策略.

在 FreeBSD 10.0 上安装 SmokePing

- - vpsee.com
SmokePing 是一款开源网络延迟监控工具,其作者 Tobi Oetiker 还开发了一些我们熟悉的 MRTG 和 RRDtool. SmokePing 能采用多种方式对网络延迟(性能)进行监测和警告,支持插件的方式对网络的其他指标进行监控,并且支持 Matser/Slave 分布式架构,多节点监控数据可以汇集到一起并通过颜色和阴影来展现网络延迟和丢包.

FreeBSD 9.0计划于11月发布

- xing - cnBeta.COM
经过数次延期后,FreeBSD 9.0计划在11月3日正式发布. FreeBSD 9.0原本定于9月发布,但是由于种种原因迟迟未发布. 本月初,FreeBSD 9.0发布了Beta 3,在正式版发布之前还将有三个RC候选版. 根据最近更新的发布计划,FreeBSD 9.0将在10月发布三个RC候选版,并于11月3日正式发布.

脱GPLを目指すFreeBSD、FreeBSD 10ではC++標準ライブラリも脱GPL

- Adam - スラッシュドット・ジャパン
あるAnonymous Coward 曰く、GPLのコードをベースシステムから取り除く試みを続けているFreeBSDプロジェクトだが、FreeBSD 10では標準C++ライブラリをGPLフリーにする見込みが立ったとのこと(マイコミジャーナルの記事、 The FreeBSD Foundationのブログ記事).

从FreeBSD到Mac-我在Mac上用到的软件

- sqhe18 - demo@virushuo
最近twitter上一帮人在吵架,起因是在Mac上用什么软件的事,这个其实没什么可吵的,一个人一个用法,但是推荐一些明显性价比不符的软件,或者让人们去盗版一些没必要盗版的软件是很不好的. 所以,我也就写写我非常简朴软件搭配吧,当然,这并会不适合所有人. 我从03年底开始远离windows,在一台dell上装了FreeBSD做我的桌面系统,开始用Gnome做为wm,几个月之后换成了ion,这是一个看上去非常简陋,但可以使用lua脚本编程的窗口管理器,功能异常强大(如果你在用Linux或是BSD,强烈推荐尝试).

在FreeBSD系统中用pkill命令踢出SSH在线登录用户

- - haohtml's blog
FreeBSD是一个多用户多任务的操作系统,用户可以在不同地方通过ssh连上FreeBSD服务器,在系统中我们可以使用w命令来查看当前在线登录用户. 看到了吧,已经有3个用户登录到服务器了. 接下来使用who am i 看那个是自己的登录终端,下面自己是pts/1. 接下来使用pkill命令将要其它的用户踢出,这里为p0和p2.

分享图片

- 糖果 - 变态辣椒的时政漫画

社区初建十四条

- 韩叙 - 掰掰/谢谢你们给的鱼啦
我做社区最大的困难是开发工作跟不上节奏,这导致社区在去年10月份进行内测,下版本更新就接不上,当时招不到运营人员,两个月空档,捱到12月份才做了改版,社区人气就是零蛋. 这段难熬的日子过去以后,我们开始有了一批核心用户,并以此为星星之火,正在起燎原之势. 虽然我是产品出身,但是渐渐的,在资源限制的条件下,我更看重运营,我把运营看成一种无形的产品和用户体验来建设.

十四年的世界旅行,五十四条人生哲理

- Shearer - 译言-生活点滴
来源54 Life Lessons 14 Years of World Travel Taught Me. 《y Travel Blog》的作者. 旅行之于我,远不止是简单地去到一个新的地方、体味一种新的文化,它是我内心的一番求索. 透过十四年、穿越世界各地的旅行与生活,我更加清楚地明白了——我是谁,我的目标是什么——也让我发现了这个世界的自然规律与生命真谛.

40套MiniIcon分享

- Newton - Booto&#39;Blog
很精美的40套迷你MiniIcon,可能这类型的Icon更多的是运用在App设计和移动客户端上面吧,简约而不简单.