在团800运维工作总结之squid做回源图片的二级缓存
# 主機(jī)名(3.0加入配置),無此項無法啟動
visible_hostname 172.16.1.80
# 管理員郵箱,會顯示在錯誤信息頁面上,方便發(fā)生錯誤時聯(lián)系!
cache_mgr yanchao@rd.tuan800.com
# 實現(xiàn)透明代理(squid2.7以上),其中vhost是必須的
http_port 8091 vhost vport
icp_port 3130
# 緩存設(shè)置
cache_mem 256 MB
maximum_object_size_in_memory 2 MB
# 替換機(jī)制(lru叫做“最近不常用的單元”unit一般就是常說object, 也就是當(dāng)cache
# 中的內(nèi)容比如內(nèi)存或硬盤達(dá)到上限時就需要進(jìn)行數(shù)據(jù)的換進(jìn)和換出工作)
memory_replacement_policy lru
# 緩存目錄50G,其中一級目錄16個,二級256個(每個一級下16個二級)
cache_dir ufs /data1/squid/var/cache 500000 16 256
max_open_disk_fds 0
#緩存內(nèi)容大小控制,當(dāng)cache目錄被占用到97%時,內(nèi)容將被清空20%
cache_swap_low 80
cache_swap_high 97
# 錯誤信息目錄
error_directory /usr/local/squid/share/errors/Simplify_Chinese
# 最大和最小緩存對象
minimum_object_size 0 KB
maximum_object_size 30 MB
# 日志格式
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh %tr
access_log /usr/local/squid/var/logs/page_zs_access_log combined
pid_filename /usr/local/squid/var/logs/squid.pid
# 不記錄store.log
cache_store_log none
# 指定代理服務(wù)器IP,2.5版本以上都是以cache_peer指定,sibling是2臺squid服務(wù)的緩存不同內(nèi)容,當(dāng)一個節(jié)點(diǎn)沒有命中去另一個節(jié)點(diǎn)查找,主要為了減少負(fù)載,后端是1.84 85 86沒命中緩存的圖片裁剪服務(wù)器
cache_peer 172.16.1.83 sibling 8091 3130
cache_peer 172.16.1.82 sibling 8091 3130
cache_peer 172.16.1.84 parent 10001 0 no-query originserver round-robin name=resize1
cache_peer 172.16.1.85 parent 10001 0 no-query originserver round-robin name=resize2
cache_peer 172.16.1.86 parent 10001 0 no-query originserver round-robin name=resize3
cache_peer_domain resize1 resize2 resize3
#緩存過期
refresh_pattern -i \.jpg$ 1440 90% 43200 reload-into-ims
refresh_pattern -i \.jpeg$ 1440 90% 43200 reload-into-ims
refresh_pattern -i \.webp$ 1440 90% 43200 reload-into-ims
refresh_pattern -i \.png$ 1440 90% 43200 reload-into-ims
# 允許客戶端所有請求(這里可以設(shè)置攔截url,格式如下面兩行緩存設(shè)置)
http_access allow all
#設(shè)置運(yùn)行squid用戶,一般不能以root運(yùn)行
cache_effective_user squid
cache_effective_group squid
~ ? ? ? ? ? ? ? ??
命令
Squid日常維護(hù)過程中,常用的一些命令:
1,初始化你在 squid.conf 里配置的 cache 目錄
squid -z
如果有錯誤提示,請檢查你的 cache目錄的權(quán)限。
可以使用使用更改目錄權(quán)限:
chown -R squid:squid /cache目錄
2,對你的squid.conf 排錯,即驗證 squid.conf 的 語法和配置。
squid -k parse
如果squid.conf 有語法或配置錯誤,這里會返回提示你,如果沒有返回,嘗試啟動squid。
3,在前臺啟動squid,并輸出啟動過程。
/usr/local/squid/sbin/squid -N -d1
如果有ready to server reques相關(guān)信息,說明Squid啟動成功。
然后 ctrl + c,停止squid,并以后臺運(yùn)行的方式啟動它。
4,啟動squid在后臺運(yùn)行。
squid -s
可以使用 ps -ax |grep squid 來查看squid進(jìn)程是否存在。
5,停止 squid
squid -k shutdown
6,重引導(dǎo)修改過的 squid.conf
squid -k reconfigure -f /XXX/squid.conf
當(dāng)squid進(jìn)行過配置更改后,可以使用該命令進(jìn)行squid配置重載。
7,把squid添加到系統(tǒng)啟動項
vi /etc/rc.d/rc.local
/usr/local/squid/sbin/squid -s
8,修改cache 緩存目錄的權(quán)限。
chown -R squid:squid /cache目錄
cache緩存目錄根據(jù)自己配置進(jìn)行更改,squid用戶和組是 squid,squid
(注:在FreeBSD系統(tǒng)中,如果我們的squid監(jiān)聽的是80端口時,只有root用戶才能啟動)。
9,修改squid 日志目錄的權(quán)限
chown -R squid:squid 定義的日志文件所在目錄
這一步并不是適合每一個使用squid的用戶.意為讓squid有權(quán)限在該目錄進(jìn)行寫操作 。
10,查看你的日志文檔。
more /usr/local/squid/var/logs/access.log | grep TCP_MEM_HIT
該指令可以看到在squid運(yùn)行過程中,有那些文件被squid緩存到內(nèi)存中,并返回給訪問用戶。
more /usr/local/squid/var/logs/access.log | grep TCP_HIT
該指令可以看到在squid運(yùn)行過程中,有那些文件被squid緩存到cache目錄中,并返回給訪問用戶。
more /usr/local/squid/var/logs/access.log | grep TCP_MISS
該指令可以看到在squid運(yùn)行過程中,有那些文件沒有被squid緩存,而是從原始服務(wù)器獲取并返回給訪問用戶。
二.squid命中率分析
/usr/local/squid/bin/squidclient -p 80 mgr:info
/usr/local/squid/bin/squidclient -p 80 mgr:5min
可以看到詳細(xì)的性能情況,其中PORT是你的proxy的端口,5min可以是60min
取得squid運(yùn)行狀態(tài)信息: squidclient -p 80 mgr:info
取得squid內(nèi)存使用情況: squidclient -p 80 mgr:mem
取得squid已經(jīng)緩存的列表: squidclient -p 80 mgr:bjects. use it carefully,it may crash
取得squid的磁盤使用情況: squidclient -p 80 mgr:diskd
強(qiáng)制更新某個url:squidclient -p 80 -m PURGE?http://www.xxx.com/xxx.php
更多的請查看:squidclient-h 或者 squidclient -p 80 mgr:
查命中率:
squidclient -h IP(具體偵聽IP) -p 80(具體偵聽端口) mgr:info
三、定期清除swap.state內(nèi)無效數(shù)據(jù)
/path/to/squid/sbin/squid -k rotate -f /path/to/squid/conf_file
vi /etc/crontab
0??????? 0?????? *?????? *?????? *?????? root??? /usr/local/sbin/squid -k rotate -f /usr/local/etc/squid/squid1.conf
當(dāng)squid應(yīng)用運(yùn)行了一段時間以后,cache_dir對應(yīng)的swap.state文件就會變得越來越大,里面的無效接口數(shù)據(jù)越來越多,這可能影響squid的響應(yīng)時間,因此需要使用rotate命令來使squid清理swap.state里面的無效數(shù)據(jù),減少swap.state的大小。
辦公室做的squid給客服用,主要是針對本公司網(wǎng)站圖片做的緩存
visible_hostname 192.168.10.89
cache_mgr yanchao@rd.tuan800.com
http_port 8091 vhost vport
icp_port 3130
cache_mem 30000 MB
maximum_object_size_in_memory 2 MB
memory_replacement_policy lru
cache_dir ufs /data1/squid/var/cache 50000 16 256
max_open_disk_fds 0
cache_swap_low 80
cache_swap_high 97
error_directory /usr/local/squid/share/errors/Simplify_Chinese
minimum_object_size 0 KB
maximum_object_size 30 MB
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh
access_log /usr/local/squid/var/logs/page_zs_access_log combined
pid_filename /usr/local/squid/var/logs/squid.pid
cache_store_log none
cache_peer 192.168.10.89 sibling 8091 3130
cache_peer 192.168.10.59 sibling 8091 3130
cache_peer * parent 80 0 no-query originserver name=d
cache_peer * parent 80 0 no-query originserver name=j
cache_peer * parent 80 0 no-query originserver name=a
cache_peer * parent 80 0 no-query originserver name=b
cache_peer * parent 80 0 no-query originserver name=c
cache_peer * parent 80 0 no-query originserver name=e
cache_peer * parent 80 0 no-query originserver name=f
cache_peer * parent 80 0 no-query originserver name=g
cache_peer * parent 80 0 no-query originserver name=h
cache_peer * parent 80 0 no-query originserver name=i
cache_peer_domain d *.com
cache_peer_domain a *.com
cache_peer_domain b *.com ?
cache_peer_domain c *.com
cache_peer_domain e *.com
cache_peer_domain f *.com
cache_peer_domain g *.com
cache_peer_domain h *.com ?
cache_peer_domain i *.com
cache_peer_domain j *.com
refresh_pattern -i \.jpg$ 1440 90% 43200 reload-into-ims
refresh_pattern -i \.jpeg$ 1440 90% 43200 reload-into-ims
refresh_pattern -i \.webp$ 1440 90% 43200 reload-into-ims
refresh_pattern -i \.png$ 1440 90% 43200 reload-into-ims
http_access allow all
cache_effective_user squid
cache_effective_group squid
?? ? ? ? ?
轉(zhuǎn)載于:https://blog.51cto.com/4249964/1746676
總結(jié)
以上是生活随笔為你收集整理的在团800运维工作总结之squid做回源图片的二级缓存的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何获得阿里技术offer:从《阿里DB
- 下一篇: Oracle中group by用法