打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
squid 优化(解释篇)
Squid 在高负载下,需要大量的内核资源。特别的,你需要给你的系统配置比正常情况更高的文件描述符和缓存。文件描述符的限制通常很恼人。你最好在开始编译squid 之前来增加这些限制的大小。
1. 文件描述符
文件描述符是一个简单的整数,用以标明每一个被进程所打开的文件和socket。第一个打开的文件是0,第二个是1,依此类推。Unix 操作系统通常给每个进程能打开的文件数量强加一个限制。更甚的是,unix 通常有一个系统级的限制。
因为squid 的工作方式,文件描述符的限制可能会极大的影响性能。当squid 用完所有的文件描述符后,它不能接收用户新的连接。也就是说,用完文件描述符导致拒绝服务。直到一部分当前请求完成,相应的文件和socket 被关闭,squid 不能接收新请求。当squid发现文件描述符短缺时,它会发布警告。
通常情况下,Squid 默认为1024个文件描述,一般情况已经够用。当系同高度繁忙时,肯能会用到4096个或更大。在编译 Squid 前推荐将描述符更改至,系统限制级别的 2~3倍。
在linux系统下使用 ulimit -n 命令查看当前系统定义的文件描述符数量。
shell> ulimit -n
编译修改/usr/include/bits/typesizes.h 头文件内的__FD_SETSIZE 值
#define __FD_SETSIZE 65536
使用ulimit -Hn 命令增加Kernel对文件描述符的限制,不必重启机器
shell> echo 65536 > /proc/sys/fs/file-max
shell> ulimit -Hn 65536
2. 临时端口号
临时端口是TCP/IP 栈分配给出去连接的本地端口。换句话说,当squid 发起一条连接到另一台服务器,内核给本地socket 分配一个端口号。这些本地端口号有特定的范围限制。
临时端口号短缺,对繁忙的Squid Server(每秒数百个链接)影响很大,当端口号不够
用过时链接会进入 TIME_WAIT 状态。在调试 Squid 时需要使用命令
shell> netstat -an |grep TIME_WAIT
在linux系统上,增加可用的临时端口号(如:1024~44444)
shell> echo "1024 40000" >/proc/sys/net/ipv4/ip_local_port_range
3.configure Squid
./configure
--prefix=/usr/local/squid
--enable-epoll
--enable-storeio=aufs,diskd,ufs
--enable-async-io
--with-aufs-threads="N_thread"(多少线程工作)
--enable-removal-policies="LIST"(2.5为3种排除机制)
注:一下参数仅为参考,实际情况要根据Squid 版本来操作!
./configure 脚本有大量的不同选项,它们以-开始。当你敲入./configure --help 时,能看到选项的完整列表。一些选项对所有configure 脚本是通用的,还有一些是squid 专有的。下面是你可能用得到的标准选项:
--perfix =PREFIX
如前面描述的一样,这里设置安装目录。安装目录是所有可执行文件,日志,和配置文件的默认目录。在整本书中,$prefix 指你选择的安装目录。
--localstatedir =DIR
该选项允许你改变var 目录的安装位置。默认是$prefix/var,但也许你想改变它,以使squid 的磁盘缓存和日志文件被存储在别的地方。
--sysconfdir =DIR
该选项允许你改变etc 目录的位置。默认的是$prefix/etc。假如你想使用/usr 作为安装位置,你也许该配置--sysconfdir为/etc.
3-1. 以下是squid 的专有./configure选项:
--enable-dlmalloc[=LIB]
在一些系统上,内建的内存分配机制(malloc)在使用squid 时表现不尽人意。使用--enable-dlmalloc 选项将squid 源代码包中的dlmalloc 包编译和链接进来。假如你的系统中已安装dlmalloc,你能使用=LIB 参数指定库的路径。请见http://g.oswego.edu/dl/html/malloc.html更多关于dlmalloc 的信息。
--enable-gnuregex
在访问控制列表和其他配置指令里,squid 使用正则表达式作为匹配机制。GNU 的正则表达式库包含在squid 的源代码包里;它可以在没有内建正则表达式的操作系统中使用。./configure脚本侦察你系统中的正则表达式库,假如必要,它可以激活使用GNU正则表达式。如果因为某些理由,你想强制使用GNU正则表达式,你可以将这个选项加到./configure命令后。
--enable-carp
Cache数组路由协议(CARP)用来转发丢失的cache到父cache的数组或cluster。在10.9章有更多关于CARP的细节。
--enable-async-io[=N_THREADS]
同步I/O 是squid 技术之一,用以提升存储性能。aufs 模块使用大量的线程来执行磁盘I/O 操作。该代码仅仅工作在linux 和solaris 系统中。=N_THREADS 参数改变squid 使用的线程数量。aufs 和同步I/O 在8.4 章中被讨论。
请注意--enable-async-io 是打开其他三个./configure 选项的快捷方式,它等同于:
--with-aufs-threads=N_THREADS
--with-pthreads
--enable-storeio=ufs,aufs
--with-pthreads
该选项导致编译过程链接到你系统中的P 线程库。aufs 存储模块是squid 中唯一需要使用线程的部分。通常来说,如果你使用--enable-saync-io 选项,那么不必再单独指定该选项,因为它被自动激活了。
--enable-storeio=LIST
Squid 支持大量的不同存储模块。通过使用该选项,你告诉squid 编译时使用哪个模块。在squid-2.5 中,支持ufs,aufs,diskd,和null 模块。通过查询src/fs 中的目录,你能得到一个模块列表。LIST 是一个以逗号分隔的模块列表,例如:
% ./configure --enable-storeio=afus,diskd,ufs
ufs 模块是默认的,看起来问题最少。不幸的是,它性能有限。其他模块可能在某些操作系统中不必编译。关于squid 存储模块的完整描述,请见第8章。
--with-aufs-threads=N_THREADS
指定aufs 存储机制使用的线程数量(见8.4章)。squid 默认根据缓存目录的数量,自动计算需要使用多少线程。
--enable-heap-replacement
该选项不再使用,但被保留用于向后兼容性。你该使用--enable-removal-policies 来代替。
--enable-removal-policies=LIST
排除策略是squid 需要腾出空间给新的cache目标时,用以排除旧目标的机制。squid-2.5支持3个排除策略:最少近期使用(LRU),贪婪对偶大小(GDS),最少经常使用(LFU)。
然而,因为一些理由,./configure 选项使指定的替代策略和需要执行它们的基本数据结构之间的差别模糊化。LRU是默认的,它以双链表数据结构执行。GDS和LFU使用堆栈的数据结构。
为了使用GDS 或LFU 策略,你指定:
% ./configure --enable-removal-policies=heap
然后你在squid 的配置文件里选择使用GDS或LFU。假如你想重新使用LRU,那么指定:
% ./configure --enable-removal-policies=heap,lru
更多的关于替换策略的细节请见7.5 章。
--enable-icmp
如在10.5 章中描述的一样,squid 能利用ICMP消息来确定回环时间尺寸,非常象ping程序。你能使用该选项来激活这些功能。
--enable-delay-pools
延时池是squid 用于传输形状或带宽限制的技术。该池由大量的客户端IP 地址组成。当来自这些客户端的请求处于cache 丢失状态,他们的响应可能被人工延迟。关于延时池的更多细节请见附录C。
--enable-useragent-log
该选项激活来自客户请求的HTTP 用户代理头的日志。更多细节请见13.5 章。
--enable-referer-log
该选项激活来自客户请求的HTTP referer 日志。更多细节请见13.4 章。
--disable-wccp
Web cache 协调协议(WCCP)是CISCO 的专有协议,用于阻止或分发HTTP 请求到一个或多个caches。WCCP默认被激活,假如你愿意,可以使用该选项来禁止该功能。
本文来自: (www.91linux.com) 详细出处参考:http://www.91linux.com/html/article/guanli/20081213/14672.html
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Squid中文权威指南第三章
configure
Apache的静态编译与动态编译详解
virtualmin安装和配置使用
FFMPEG完美入门资料---004---FFmpeg 裁剪说明
squid反向代理基本概述及性能事项_逆向工程学习
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服