tmpfs加速并降低squid负载(一)
原因:
原squid速度慢,uptime看平均负载很高!
概念:一般负载峰值设为cpu个数的5倍。Load avarage/cpu数目 <3 系统良好,3到5之间可以接受,大于5 则可能有严重的性能问题。举个例子:假设系统有两个cpu,那么负载在10以下都是可以接受的,超过10,就说明有严重问题了。
看cpu个数:grep -c processor /proc/cpuinfo 关于负载的一篇好文章:http://ssorc.tw/logsprint.php?id=59
处理思路:
重新编译,2.5换到2.6
'--prefix=/opt/squid' '--enable-async-io=40' '--enable-storeio=aufs,coss,diskd,ufs' '--enable-useragent-log' '--enable-referer-log' '--enable-kill-parent-hack' '--enable-forward-log' '--enable-snmp' '--enable-cache-digests' '--enable-default-err-language=Simplify_Chinese' '--enable-epoll' '--enable-removal-policies=heap,lru' '--enable-large-cache-files' '--disable-internal-dns' '--enable-x-accelerator-vary' '--enable-follow-x-forwarded-for' '--with-large-files' '--disable-ident-lookups' '--enable-underscore' '--disable-arp-acl' '--with-maxfd=65500'
修改内核参数(因为TIME_WAIT太多)
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
发现错误:
WARNING: Disk space over limit: 5242944 KB > 5242880 KB
修改缓存策略:
原:
cache_dir aufs /var/squid/cache/cache01 5120 16 32
现:
cache_replacement_policy heap GDSF
memory_replacement_policy heap GDSF
cache_dir aufs /var/squid/cache/cache01 5120 16 128
cache_dir aufs /var/squid/cache/cache02 5120 16 128
等待结果……….
现在发现的WARNING
WARNING:squidaio_queue_request: WARNING - Queue congestion
IO的队列满了, ,重谝一下源代码,加大IO的队列或换一种IO方式。
--enable-async-io=40 (40少了)
WARNING: All dnsserver processes are busy.
WARNING: up to 5 pending requests queued
修改为:
'--prefix=/opt/squid' '--enable-async-io=160' '--enable-storeio=aufs,coss,diskd,ufs' '--enable-useragent-log' '--enable-referer-log' '--enable-kill-parent-hack' '--enable-forward-log' '--enable-snmp' '--enable-cache-digests' '--enable-default-err-language=Simplify_Chinese' '--enable-epoll' '--enable-removal-policies=heap,lru' '--enable-large-cache-files' '--disable-internal-dns' '--enable-x-accelerator-vary' '--enable-follow-x-forwarded-for' '--with-large-files' '--disable-ident-lookups' '--enable-underscore' '--disable-arp-acl' '--with-maxfd=65500'
查看平均负载并未降低:
[root@SQUID99 ~]# vmstat 2
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 0 2655000 363884 3002856 0 0 5 157 0 3 1 1 92 6
0 2 0 2652696 363920 3004380 0 0 78 2286 7076 3115 3 1 86 11
0 0 0 2652376 363972 3004588 0 0 26 5246 3336 1136 1 0 88 11
0 5 0 2651288 364000 3005860 0 0 66 792 5888 3395 3 1 87 9
0 0 0 2650448 364044 3007116 0 0 72 1410 5600 3265 3 1 92 4
1 0 0 2648128 364092 3008888 0 0 110 0 7257 4573 4 1 94 1
0 4 0 2647952 364116 3009124 0 0 32 2828 4046 1553 1 0 82 16
bo,对磁盘的写入,这个数字偏大
补充:查看磁盘的性能 使用 iostat -d 2这样的命令:
Device: 设备或者分区名
tps:每秒发送到设备上的IO请求次数
Blk_read/s:设备每秒钟读的数据(KB/秒)
Blk_wrtn/s:设备每秒钟写的数据(KB/秒)
Blk_read:设备读数据的总大小(KB)
Blk_wrtn:设备写数据的总大小(KB)
怀疑是磁盘cache文件太多,并且全为小文件
Store Directory #0 (aufs): /var/squid/cache/cache01
FS Block Size 4096 Bytes
First level subdirectories: 16
Second level subdirectories: 128
Maximum Size: 5242880 KB
Current Size: 4618916 KB
Percent Used: 88.10%
Current load metric: 102 / 1000
Filemap bits in use: 1037841 of 1048576 (99%)
Filesystem Space in use: 10222176/82518992 KB (12%)
Filesystem Inodes in use: 2082702/10485760 (20%)
Flags: SELECTED
Accepted object sizes: 0 - (unlimited) bytes
Removal policy: heap
尝试用内存作为cache,取消磁盘cache:
方法转自:
http://www.5ilinux.com/blog/archives/000075.html
巧用tmpfs加速你的linux服务器
原理:使用tmpfs来实现虚拟磁盘来存放squid的缓存文件
默认系统就会加载/dev/shm ,它就是所谓的tmpfs,有人说跟ramdisk(虚拟磁盘),但不一样。象虚拟磁盘一样,tmpfs 可以使用您的 RAM,但它也可以使用您的交换分区来存储。而且传统的虚拟磁盘是个块设备,并需要一个 mkfs 之类的命令才能真正地使用它,tmpfs 是一个文件系统,而不是块设备;您只是安装它,它就可以使用了。
tmpfs有以下优势:
1。动态文件系统的大小,
2。tmpfs 的另一个主要的好处是它闪电般的速度。因为典型的 tmpfs 文件系统会完全驻留在 RAM 中,读写几乎可以是瞬间的。
3。tmpfs 数据在重新启动之后不会保留,因为虚拟内存本质上就是易失的。所以有必要做一些脚本做诸如加载,绑定的操作。
首先在/dev/stm建个tmp文件夹,然后与实际/tmp绑定
mkdir /dev/shm/tmp
chmod 1777 /dev/shm/tmp
mount --bind /dev/shm/tmp /tmp
默认shm是使用实际内存的一半
1。squid的缓存目录设置
vi /etc/squid/squid.conf
修改成
cache_dir ufs /tmp 256 16 256
这里的第一个256表示使用256M内存,我觉得高性能LINUX双效防火墙HOWTO使用ramdisk的方法还不如直接使用tmpfs,至少每次启动不用mkfs,还可以动态改变大小。
然后重启一下服务,ok,现在所有的squid缓存文件都保存倒tmpfs文件系统里了,很快哦。
运行一天后的结果,效果还是很明显,负载从12下降到了0.3!!并且vmstat查看也有很大变化
[root@SQUID95 ~]# uptime
09:25:07 up 118 days, 21:19, 2 users, load average: 0.32, 0.34, 0.27
[root@SQUID95 ~]# vmstat 2
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 208 3978912 198916 2286424 0 0 11 19 0 0 1 1 95 4
0 0 208 3978784 198916 2286684 0 0 0 50 7868 4551 2 1 97 0
0 0 208 3978848 198916 2285904 0 0 0 0 6302 3639 2 0 98 0
1 1 208 3978656 198944 2286656 0 0 0 40 12740 6353 6 2 92 0
1 0 208 3978464 198956 2286644 0 0 0 154 10673 5910 4 1 95 0
0 0 208 3977952 198956 2286904 0 0 0 0 10292 5477 4 1 95 0
0 0 208 3977904 198956 2287164 0 0 0 152 8622 5113 3 1 96 0
[root@SQUID95 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/cciss/c0d0p2 29G 1.1G 27G 4% /
/dev/cciss/c0d0p1 99M 12M 82M 13% /boot
none 4.0G 1.4G 2.6G 35% /dev/shm
/dev/cciss/c0d0p3 20G 1.8G 17G 10% /usr
/dev/cciss/c0d0p6 79G 25G 51G 33% /var
/dev/shm/tmp 4.0G 1.4G 2.6G 35% /tmp
磁盘缓存和RAM缓存比较:
1.磁盘缓存重要在缓存,机器down机或者重启都没有影响,但是不断对磁盘进行读写,负载会高
2.RAM缓存重要在速度,因为是内存读写,速度很快,但是缓存的文件没有保证,机器一旦重启,缓存文件将丢失。
但是选择磁盘缓存还是RAM缓存,还是应该看自己的实际情况,对于我这边,由于是单点,都是本地抓取文件,速度很快,所以缓存就显的不是那么重要。
实际应用出现的问题:
df -h 看
/dev/shm/tmp 4.0G 1.4G 2.6G 35% /tmp 明显空间还很多
但是cache.log中大量报错:
2009/08/11 17:06:47|/tmp/swap.state.new: (28) No space left on device
|FATAL: storeDirOpenTmpSwapLog: Failed to open swap log.
2009/08/11 17:06:47| storeAufsOpenDone: (28) No space left on device
2009/08/11 17:06:47| /tmp/0C/4B/000325CF
2009/08/11 17:06:47| storeSwapOutFileClosed: dirno 0, swapfile 000325CF, errflag=-1
(28) No space left on device
2009/08/11 17:06:47| storeAufsOpenDone: (28) No space left on device
2009/08/11 17:06:47| /tmp/0C/4B/000325CF
2009/08/11 17:06:47| storeSwapOutFileClosed: dirno 0, swapfile 000325CF, errflag=-1
(28) No space left on device
2009/08/11 17:06:47| storeAufsOpenDone: (28) No space left on device
然后df -i 发现问题:
/dev/shm/tmp 209923 209923 0 100% /tmp
innodes被用光了!
查看一些资料,发现在mount tmp这个虚拟分区的时候可以修改inodes
mount -t tmpfs -o size=1G,nr_inodes=40k,mode=0700 tmpfs /tmp
大小为1G,inodes40K=40960
可是问题又出现了,squid不会自己清cache,直到磁盘用光down掉!
棘手的问题。
转载于:https://www.cnblogs.com/youlechang123/archive/2012/08/10/2631169.html
tmpfs加速并降低squid负载(一)相关推荐
- 宝塔面板网站一打开cpu百分百_BT宝塔面板打开这个功能网站快到起飞,降低宝塔面板内存和CPU使用率,降低运行负载...
最近一段时间网站经常出现链接数据库错误,当然原因很简单,卡着了.查看宝塔面板发现负载状态经常是100%,内存使用率也是100%,CPU也不用说了,所以在网上查找了一些关于降低宝塔面板服务器内存和CPU ...
- 使用CacheFS+TmpFS加速NFS读取速度
使用CacheFS + TmpFS加速NFS读取速度 CacheFS 文件系统 CacheFS 文件系统简介 使用CacheFS TmpFS文件系统 同时使用CacheFS和TmpFS 参考资料 Ca ...
- Ableton Live Suite如何降低CPU负载?
Ableton Live 11 Suite Mac破解版是Mac平台上用于创建和录制音乐的音乐制作软件,其插件和固件会大大增加CPU的负荷,那么如何降低Ableton Live Suite的CPU负载 ...
- mediawiki修改用mysql数据库_修改MediaWiki的动态页面列表DPL设置降低MySQL负载
最近一直在为降低MySQL服务器负载努力,Drupal网站中主要是排查Views引起的性能问题,而MediaWiki中也有一个与Drupal的Views对应的工具:Dynamic Page List ...
- Nginx+Varnish 实现动静分离,为服务器分流,降低服务器负载
相必大家在看加快网站响应速度方面的文章时,都提过这么一条:动静分离.那怎样实现动静分离呢,这里笔者就亲自搭建相关服务实现动静分离. 动静分离是一种架构,就是把静态文件,比如JS.CSS.图片甚至有些静 ...
- Cortex-A72核心板 | RK3399六核
64位6核"服务器级"处理器 基于瑞芯微国产RK3399处理器设计,集成2颗1.8GHz ARM Cortex-A72内核.4颗1.4GHz ARM Cortex-A53内核,64 ...
- Redis是什么?看完就知道了
之前<MongoDB是什么?看完就知道了>收到许多赞,作为该文章的姐妹篇,本文主要从运维开发的角度总结Redis的知识,力求简单,形成思维导图,总结Redis的一些特点优点,为之后的技术选 ...
- 利用负载均衡优化和加速HTTP应用
1.负载均衡技术简介 现代企业信息化应用越来越多的采用B/S应用架构来承载企业的关键业务,因此,确保这些任务的可靠运行就变得日益重要.随着越来越多的企业实施数据集中,应用的扩展性.安全性和可靠性也越来 ...
- squid正向代理 反向代理 CDN加速
文章目录 一.squid正向代理 反向代理 CDN加速. 1.正向代理 1.1如何实现正向代理 2.反向代理 2.1 如何实现反向代理 3.CDN加速 3.1.如何实现CDN加速 一.squid正向代 ...
最新文章
- BigdCIMAL类型数据的使用选择
- mac 10.9.5 安装hadoop 1.2.1 运行wordcount
- OpenCV使用pthread实现多线程加速处理图像(C++)
- js java socket_js使用WebSocket,java使用WebSocket
- html读取oss_阿里云使用js 实现OSS图片上传、获取OSS图片列表(示例代码)
- python去除视频中的logo_Python音视频开发:消除抖音短视频Logo和去电视台标的实现详解...
- 【Elasticsearch】我在 Elasticsearch 集群内应该设置多少个分片?
- Spring MVC+ Spring + Mybatis “三大框架”介绍
- docx转换成txt linux,如何将doc / docx文件转换为markdown或结构化文本?
- 智慧医院软件(APP)功能列表
- table-首列冻结
- win10安装双系统——ubuntu20.04安装步骤
- 【附源码】手写一个Ico生成器
- 新时代知识产权创新发展与严格保护_保护知识产权?宣传强化治理——东安街道团结社区新时代文明实践站大力宣传《知识产权法》...
- GDAL(Geospatial Data Abstraction Library )简介
- php 获取酷狗音乐真实地址
- CSS3 图片旋转特效
- 2007武汉房地产数据分析报告
- 软考有什么用?最全软考详解
- Ardiuno智能电蚊拍
热门文章
- 【mybatis】 “if“ 相关联的 “test“ 属性值不能包含 ‘<‘ 字符
- mysql5.7 忘记root密码后,如何找回密码?
- mybatis 分页查询_MyBatis之分页查询:MyBatis PageHelper
- 层和 native_React-Native与小程序的底层框架比较
- yiicms php版本,yiicms
- red hat 6 安装php,Red hat linux服务器简明安装手册(OpenSSL+Mysql+Apache2+PHP)
- web页面刷不出来 白色_今日头条连接超时刷不出来解决方案
- elasticsearch mapping之dynamic
- Apache Flink 零基础入门(七)Flink中keyBy三种方式指定key
- 拥有此神技,脚本调试从此与 echo、set、test 说分手