在团800运维工作总结之squid做回源图片的二级缓存
# 主机名(3.0加入配置),无此项无法启动
visible_hostname 172.16.1.80
# 管理员邮箱,会显示在错误信息页面上,方便发生错误时联系!
cache_mgr yanchao@rd.tuan800.com
# 实现透明代理(squid2.7以上),其中vhost是必须的
http_port 8091 vhost vport
icp_port 3130
# 缓存设置
cache_mem 256 MB
maximum_object_size_in_memory 2 MB
# 替换机制(lru叫做“最近不常用的单元”unit一般就是常说object, 也就是当cache
# 中的内容比如内存或硬盘达到上限时就需要进行数据的换进和换出工作)
memory_replacement_policy lru
# 缓存目录50G,其中一级目录16个,二级256个(每个一级下16个二级)
cache_dir ufs /data1/squid/var/cache 500000 16 256
max_open_disk_fds 0
#缓存内容大小控制,当cache目录被占用到97%时,内容将被清空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
# 指定代理服务器IP,2.5版本以上都是以cache_peer指定,sibling是2台squid服务的缓存不同内容,当一个节点没有命中去另一个节点查找,主要为了减少负载,后端是1.84 85 86没命中缓存的图片裁剪服务器
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
# 允许客户端所有请求(这里可以设置拦截url,格式如下面两行缓存设置)
http_access allow all
#设置运行squid用户,一般不能以root运行
cache_effective_user squid
cache_effective_group squid
~
命令
Squid日常维护过程中,常用的一些命令:
1,初始化你在 squid.conf 里配置的 cache 目录
squid -z
如果有错误提示,请检查你的 cache目录的权限。
可以使用使用更改目录权限:
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相关信息,说明Squid启动成功。
然后 ctrl + c,停止squid,并以后台运行的方式启动它。
4,启动squid在后台运行。
squid -s
可以使用 ps -ax |grep squid 来查看squid进程是否存在。
5,停止 squid
squid -k shutdown
6,重引导修改过的 squid.conf
squid -k reconfigure -f /XXX/squid.conf
当squid进行过配置更改后,可以使用该命令进行squid配置重载。
7,把squid添加到系统启动项
vi /etc/rc.d/rc.local
/usr/local/squid/sbin/squid -s
8,修改cache 缓存目录的权限。
chown -R squid:squid /cache目录
cache缓存目录根据自己配置进行更改,squid用户和组是 squid,squid
(注:在FreeBSD系统中,如果我们的squid监听的是80端口时,只有root用户才能启动)。
9,修改squid 日志目录的权限
chown -R squid:squid 定义的日志文件所在目录
这一步并不是适合每一个使用squid的用户.意为让squid有权限在该目录进行写操作 。
10,查看你的日志文档。
more /usr/local/squid/var/logs/access.log | grep TCP_MEM_HIT
该指令可以看到在squid运行过程中,有那些文件被squid缓存到内存中,并返回给访问用户。
more /usr/local/squid/var/logs/access.log | grep TCP_HIT
该指令可以看到在squid运行过程中,有那些文件被squid缓存到cache目录中,并返回给访问用户。
more /usr/local/squid/var/logs/access.log | grep TCP_MISS
该指令可以看到在squid运行过程中,有那些文件没有被squid缓存,而是从原始服务器获取并返回给访问用户。
二.squid命中率分析
/usr/local/squid/bin/squidclient -p 80 mgr:info
/usr/local/squid/bin/squidclient -p 80 mgr:5min
可以看到详细的性能情况,其中PORT是你的proxy的端口,5min可以是60min
取得squid运行状态信息: squidclient -p 80 mgr:info
取得squid内存使用情况: squidclient -p 80 mgr:mem
取得squid已经缓存的列表: squidclient -p 80 mgr:bjects. use it carefully,it may crash
取得squid的磁盘使用情况: squidclient -p 80 mgr:diskd
强制更新某个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内无效数据
/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
当squid应用运行了一段时间以后,cache_dir对应的swap.state文件就会变得越来越大,里面的无效接口数据越来越多,这可能影响squid的响应时间,因此需要使用rotate命令来使squid清理swap.state里面的无效数据,减少swap.state的大小。
办公室做的squid给客服用,主要是针对本公司网站图片做的缓存
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
转载于:https://blog.51cto.com/4249964/1746676
在团800运维工作总结之squid做回源图片的二级缓存相关推荐
- 在团800运维工作总结之couchbase使用
好久没有写博客了 今天带来couchbase的安装使用 rpm -ivh couchbase....rpm 访问http://ip:8091 开始设置couchbase集群 其他机器加入集群 创建bu ...
- 在知乎上看到的一个关于Linux运维工程师必知的几点,希望对有志于从事运维工作的你有帮助
作者:Shanker Lee 链接:https://www.zhihu.com/question/19855127/answer/13816874 来源:知乎 著作权归作者所有.商业转载请联系作者获得 ...
- 一个初级运维工程师对于运维工作的一些浅显认知
最近因为部门架构调整,之前工作做了交接,新的安排又没有确定,领导建议学习下JAVA开发,后续直接参与到研发工作中而不再负责运维工作.周围同事也都在说运维工作比较low,转研发会好一些.但是毕竟从毕业之 ...
- 面试 Linux 运维工作至少需要知道哪些知识?
点击上方"程序员大咖",选择"置顶公众号" 关键时刻,第一时间送达! 先不说楚枫的这般年纪,能够踏入元武一重说明了什么,最主要的是,楚枫在刚刚踏入核心地带时,明 ...
- 运维工作钱少、事多而且杂?年轻人,你这个思想很危险吶
知乎上有个网友提出了这样的问题:"为什么感觉做运维是事累事杂还最不值钱的那一档?" 不少运维工作者都在这个问题下面发表了自己的看法. 初级运维工作者的工作内容包含很多基础.重复性的 ...
- Linux 运维工作中的经典应用ansible(批量管理)Docker容器技术(环境的快速搭建)...
一 Ansible自动化运维工具 Python 在运维工作中的经典应用ansible(批量管理操作)1.安装ansible(需要bese epel 2种源) wget -O /etc/yum.repo ...
- 网络运维工作是什么的?
互联网运维工作,以服务为中心,以稳定.安全.高效为三个基本点,确保公司的互联网业务能够 7×24 小时为用户提供高质量的服务. 运维人员对公司互联网业务所依赖的基础设施.基础服务.线上业务进行稳定性加 ...
- 我的一个学生在运维工作中写的自动日志清理脚本程序
本文是我的一个学生在运维工作中写的自动日志清理脚本程序,我这里不评价该shell脚本写的好与坏,只是发出来,和大家做一个分享,如果能给大家带来一点点思路上的参考就够了. 自动日志清理脚本程序 #!/b ...
- 公用机房计算机主板选购,才知道,IDC机房运维工作居然可以如此简单!
原标题:才知道,IDC机房运维工作居然可以如此简单! 机房运维事情比较多且繁琐,每一个细节都要做到标准.专业和完美!如何将繁琐的机房运维简化,就从这几点开始! 机房运维 关于电力 定期检测机房内市电及 ...
最新文章
- 最详细的vue-cli工具构建vue项目教程
- Mysql重置初始密码的方法
- Ajax — 大事件项目(第一天)
- Java字符串替换(replace)
- Saruman's Army (POJ 3069)
- (翻译)开始iOS 7中自动布局教程(二)
- Node进阶:核心模块http简介
- 大用户量下Open***部署方案(二)
- openpyxl 简单使用
- 多态_python的小窝_百度空间
- 微软雅黑的问题(for silverlight)
- 笔记——专访李运华:程序员如何在技术上提升自己
- Oracle中lpad的用法
- 中文谚语 enlish version
- 如何在一周内快速摸清一个行业?
- Rimworld Mod教程 第一章:这可能是你见过的最细的MOD教程了
- 【遍历csv文件按年份统计各列个数并批量输出】
- Unity 利用HDRP《异教徒:数字人》中的眼球遮蔽方法,计算眼眶投影
- 读懂 diff 命令
- 常见3大类放电管的区别与特性