Thursday, February 28, 2008

squid - 使用 tempfs (RAM) 加速法

在大陸網站看到有人用 Memory 當 squid 的 cache_dir 效果不錯。自己試用之後真的非常快,只要開過的網頁再開,簡直可以說是"秒"殺,真的非常快。

只不過當 Ramdisk 使用快要滿了,在下載比較大的檔案會變的很慢,目前還在研究問題的原因。

0. cache_dir 的決定
通常是以主機記憶體大小的三分之一,例如記憶體 1G 則 cache_dir 大約 300M,如果記憶體剩餘的比較多,可能可以到二分之一。這個大小,可以依造執行的狀況,再調整。

1. 設定 tmpfs
有兩種方式
a. 在 /etc/fstab 加入
none /var/spool/squid tmpfs defaults,size=320M 0 0

b. 以指令方式建立
mount -t tmpfs -o size=320m none /var/spool/squid

有些人是用和 /tmp 綁定,目前我尚未使用所以無法評論,有空我實做後再把結論寫出來。


2. squid.conf.mem 設定
通常我會保留把原始設定保留起來,所以另外寫一個 squid.conf.mem 方便切換
cp /etc/squid/squid.conf.stand
舊的 squid.conf 複製一份為 squid.conf.stand
vi /etc/squid/squid.conf.mem

cache_mem 8
cache_dir ufs /var/spool/squid 320 8 256
cache_swap_low 85
cache_swap_high 95

說明:
cache momery 建議不要太大,預設是 8M ,這個大小已經足夠 1G 的 cache object使用,加上我們的 cache_dir 只有 320M。cache_dir 之前上面說明設定為 320 M。


有很多網站不管記憶體多少都將第一層目錄設成 16 這是錯的。應該是有人看到範例就直接抄過來,只改記憶體大小,後面兩個數字就直接照抄,完全不知道這個數字是怎麼來的。
cache_dir ufs /tmp 256 16 256


3. 啟動 script

為了啟動及關閉方便,寫了兩個 Script ,如果有機會,我再合併成一支執行。
vi startSquidMem.sh

#!/bin/sh

mount -t tmpfs -o size=320m none /var/spool/squid
chown squid:squid /var/spool/squid
mount /var/spool/squid
cp /etc/squid/squid.conf.mem /etc/squid/squid.conf
#squid -z
#建立 cache_dir, 不過現在的 /etc/init.d/squid 會檢查,如果沒有做會自己做)
/etc/init.d/squid start

vi stopSquidMem.sh
#!/bin/sh

/etc/init.d/squid stop
# 復原設定
cp /etc/squid/squid.conf.stand /etc/squid/squid.conf

No comments:

Post a Comment