Squid最佳化完全手冊(2)(轉)

post0發表於2007-08-10
Squid最佳化完全手冊(2)(轉)[@more@]

三、 使用reiserfs檔案系統

有人做過測試,在相同條件下,如果cache分割槽使用reiserfs檔案系統,效能要比使用ext2的高出20%,所以我們將在cache分割槽中採用reiserfs檔案系統。在上一步中,我們已經在核心中提供了對 reiserfs的支援,下面我們要做的,就是將原來的cache分割槽重新格式化成reiserfs檔案系統。

首先從ftp://ftp.namesys.com/pub/reiserfsprogs/reiserfsprogs-3.x.0j.tar.gz下載reiserfs檔案系統相關工具reiserfsprogs,然後解開該檔案:

tar xvzf reiserfsprogs-3.x.0j.tar.gz

進入新生成目錄,執行:

./configure

make

make install

這將生成mkreiserfs、reiserfsck、debugreiserfs、resize_reiserfs四個reiserfs的工具。

完成後我們將reiserfs工具安裝成功了。這時,假設原來的cache分割槽為/dev/sda7,所裝載的目錄為/cache,在對其格式化之前,我們要先umount 原來的分割槽:

umount /cahce

對分割槽格式化,我們執行:

mkreiserfs –h r5 /de/sda7

完成後我們修改/etc/fstab,將/cache一行改為:

/dev/sda7 /cache reiserfs notail,noatime 0 0

然後重啟動。

四、 重新編譯squid

經過大量的測試表明:squid-2.2.STABLE5+hno補丁的組合要比2.3或者是其他版本的squid都要穩定的多、效率也要高的多,如果您不相信可以自己化幾天時間做一下測試。所以我們將採用這個版本的squid。

首先從下載squid-2.2.STABLE5-src.tar.gz,從下載squid-2.2.STABLE5-hno.20000202.snapshot.gz補丁,然後分別解開這兩個包:

tar xvzf squid-2.2.STABLE5-src.tar.gz

gunzip –d squid-2.2.STABLE5-hno.20000202.snapshot.gz

然後打補丁:

cd squid-2.2.STABLE5

patch –p1 < ../ squid-2.2.STABLE5-hno.20000202.snapshot

接下來,就可以開始編譯squid了,在採用非同步io(多執行緒模式)之外,我們本著這樣一個原則:那就是去掉一切不需要的功能,如下所示:

./configure --prefix=/usr --exec_prefix=/usr --bindir=/usr/sbin --libexecdir=/usr/lib/squid --localstatedir=/var --sysconfdir=/etc/squid --mandir=/usr/share/man --enable-async-io=20 --disable-icmp --disable-delay-pools --disable-mem-gen-trace --disable-useragent-log --enable-kill-parent-hack --disable-arp-acl --enable-poll --disable-ident-lookups

make

make install

其中,--enable-async-io=20說明我們採用非同步io,並採用18個執行緒。

編譯透過後,我們就可以開始配置squid了。

五、 最佳化squid配置

以下是我的squid.conf及相關解釋:

#取消對代理陣列的支援

icp_port 0

#對日誌檔案和pid檔案位置進行設定

cache_store_log none

cache_access_log /var/log/squid/access.log

cache_log /var/log/squid/cache.log

emulate_httpd_log on

pid_filename /var/run/squid.pid

#設定執行時的使用者和組許可權

cache_effective_user squid

cache_effective_group squid

#設定管理資訊

visible_hostname proxy.yxtc.edu.cn

cache_mgr bye2000@yxtc.edu.cn

#設定監聽地址和埠

http_port 3128

tcp_incoming_address x.x.x.x

udp_incoming_address x.x.x.x

#見下面補充說明

cache_mem 32 MB

cache_dir /cache 6000 14 256

#設定cache物件超時時間

reference_age 3 months

#訪問控制設定

acl mynet src 192.168.1.0/255.255.255.0

acl all src 0.0.0.0/0.0.0.0

http_access allow mynet

http_access deny all

#透明代理設定

httpd_accel_host virtual

httpd_accel_port 80

httpd_accel_with_proxy on

httpd_accel_uses_host_header on

#swap 效能微調

half_closed_clients off

cache_swap_high 100%

cache_swap_low 80%

maximum_object_size 1024 KB

#見補充說明

refresh_pattern -i .html 1440 90% 129600 reload-into-ims

refresh_pattern -i .shtml 1440 90% 129600 reload-into-ims

refresh_pattern -i .hml 1440 90% 129600 reload-into-ims

refresh_pattern -i .gif 1440 90% 129600 reload-into-ims

refresh_pattern -i .swf 1440 90% 129600 reload-into-ims

refresh_pattern -i .jpg 1440 90% 129600 reload-into-ims

refresh_pattern -i .png 1440 90% 129600 reload-into-ims

refresh_pattern -i .bmp 1440 90% 129600 reload-into-ims

refresh_pattern -i .js 1440 90% 129600 reload-into-ims

補充說明:

1.cache_mem 32 MB

注意:cache_mem並不是squid所能使用記憶體的大小,而是squid使用者hot object的實體記憶體的大小,所以這個值可以小一些。

2.cache_dir /cache 6000 14 256

對於第一級子目錄和第二級子目錄的計算方法,可以參考筆者以前的文章《用LINUX架設代理伺服器(上)(中)(下)》;

3.refresh_pattern -i .html 1440 90% 129600 reload-into-ims等

這幾句其實是強行控制物件的超時時間,這違反了http協議的精神,但是在頻寬較窄的場合,可以提高明顯系統相應時間。

4.注意/cache目錄及日誌檔案的許可權,其所有使用者和所有組必須為squid;

5.可以採用rpm包的指令碼/etc/rc.d/init.d/squid控制squid,也可以採用squid命令控制,具體可以參考squid –h

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-940648/,如需轉載,請註明出處,否則將追究法律責任。

相關文章