在日常運維工作中,隻要用到squid緩存服務,就會常常被要求清理squid緩存。
比如公司上司要求删一篇新聞,新聞是生成的靜态。運維人員把伺服器上靜态的新聞頁面删除了後,不料代理伺服器上緩存還有。
緩存伺服器如果用的是suqid,下面就對清理squid緩存的方法做一梳理:
(1)首先在squid的主配置檔案中添加acl 清單,并允許受信任的主機有權限清除緩存。
[root@hqtime ~]# vim /etc/squid/squid.conf
.......
acl managercache src 192.168.1.145 127.0.0.1
acl Purge method PURGE
http_access allow managercache Purge
http_access deny Purge
(2)使用squid自帶指令squidclient
如下清除squid中一條緩存,-h是受信任清理緩存的伺服器ip,-p是指定的squid端口
[root@hqtime ~]# /usr/bin/squidclient -h 192.168.1.145 -p 80 -m PURGE http://www.linuxidc.com/404.html
或者
[root@hqtime ~]# /usr/bin/squidclient -p 80 -m PURGE http://www.linuxidc.com/404.html
-------------------------------------------------------
擷取所有緩存 *.jpg 的資訊
[root@hqtime ~]# /usr/bin/squidclient -p 80 mgr:objects | grep jpg
取得squid運作狀态資訊
[root@hqtime ~]# /usr/bin/squidclient -p 80 mgr:info
取得squid記憶體使用情況
[root@hqtime ~]# /usr/bin/squidclient -p 80 mgr:mem
取得squid已經緩存的清單(小心使用此指令 可能導緻崩潰):
[root@hqtime ~]# /usr/bin/squidclient -p 80 mgr:objects
取得squid的磁盤使用情況:
[root@hqtime ~]# /usr/bin/squidclient -p 80 mgr:diskd
強制更新某個url:
[root@hqtime ~]# /usr/bin/squidclient -p 80 -m PURGE http://www.yejr.com/static.php
(3)通過腳本删除
比如編寫删除squid緩存的腳本clear_squid_cache.sh,如下:
[root@hqtime ~]# vim clear_squid_cache.sh
#!/bin/sh
squidcache_path="/data1/squid/var/cache"
squidclient_path="/usr/bin/squidclient"
grep -a -r $1 $squidcache_path/* | strings | grep "http:" | awk -F'http:' '{print "http:"$2;}' > cache_list.txt
for url in `cat cache_list.txt`; do
$squidclient_path -m PURGE -p 80 $url
done
[root@hqtime ~]# chmod 755 clear_squid_cache.sh #賦予腳本可執行權限
注意:腳本中的下面兩個設定:
squidcache_path= 表示squid緩存目錄的路徑,這個在squid.conf配置檔案中可以查到
squidclient_path= 表示squidclient程式所在的路徑,預設為squid安裝目錄下的bin/squidclient
-p 是指定squid 監聽的端口
用法:
清除所有Flash緩存(擴充名.swf):
[root@hqtime ~]# sh clear_squid_cache.sh swf
清除URL中包含sina.com.cn的所有緩存:
[root@hqtime ~]# sh clear_squid_cache.sh sina.com.cn
清除檔案名為huanqiu.jpg的所有緩存:
[root@hqtime ~]# sh clear_squid_cache.sh huanqiu.jpg
如果對于頻繁更新的gif或者什麼,可以在crontab中添加對應的指令行
假設上述腳本在/root目錄下。如下:
[root@hqtime ~]# crontab -e
0 * * * * /bin/bash /root/clear_squid_cache.sh gif &
這樣就會每隔一個小時進行一次重新整理操作了,很是友善
如果需要讓圖檔更新人員自行重新整理的話,就可以找相應的人員開發web頁面,進行對腳本的調用就可以了
腳本效率:
經測試,此腳本清除26000個緩存檔案用時2分鐘左右,平均每秒可清除緩存檔案177個。
(4)還有一種方法,直接删除squid的緩存目錄,這樣就删除了squid的全部緩存了!
然後重新建立同名空目錄做為緩存目錄,接着squid -z重新初始化,最後重新開機squid即可!
檢視squid.conf配置檔案,比如緩存目錄是/data1/squid/var/cache(cache_dir後面設定的)
[root@hqtime ~]# rm -rf /data1/squid/var/cache
[root@hqtime ~]# squid -z
[root@hqtime ~]# /etc/init.d/squid restart
***************當你發現自己的才華撐不起野心時,就請安靜下來學習吧***************
本文轉自散盡浮華部落格園部落格,原文連結:http://www.cnblogs.com/kevingrace/p/5991582.html,如需轉載請自行聯系原作者