squid有些功能是默认没有开启的,需编译;不知后来有什么办法加进去,正在试验

简介:
#./configure –prefix=/usr/local/squid –enable-gnuregex –enable-async-io=80 –enable-icmp –enable-kill-parent-hack –enable-snmp –disable-ident-lookups –enable-cahce-digests –enable-arp-acl –enable-err-language=”Simplify_Chinese” –enable-default-err-languages=”Simplify_Chinese” –enable-poll –enable-linux-netfilter –enable-underscore
#make
#make install
我个人安装软件都比较喜欢用源码包自己编译,觉得这样知道你自己在做什么,用rpm包好像不知道做什么的就安装好了。下面我们对各个编译参数进行解释,当然你可以通过./configure –help来查看其他的参数,以及各个参数的英文解释。
–prefix=/usr/local/squid :指定软件的安装路径
–enable-gnuregex :由于Squid大量使用字符串处理做各种判断,加入此项能更好的处理。
–enable-async-io=80 :这个主要是设置async模式来运行squid,我的理解是设置用线程来运行squid,如果服务器配置很不错,有1G以上内存,cpu使用SMP的方式的话可以考虑设成160或者更高。如果服务器比较糟糕就根据实际情况设了。另外此项还另cache文件支持aufs
–enable-icmp :加入icmp支持
–enable-kill-parent-hack :关掉suqid的时候,要不要连同父进程一起关掉,这个当然要啦
–enable-snmp :此选项可以让MRTG使用SNMP协议对服务器的流量状态进行监测,因此必须选择此项,使Squid支持SNMP接口。
–disable-ident-lookups :防止系统使用RFC931规定的身份识别方法。
–enable-cahce-digests :加快请求时,检索缓存内容的速度。
–enable-arp-acl :可以在规则设置中直接通过客户端的MAC地址进行管理,防止客户使用IP欺骗。
–enable-err-language=”Simplify_Chinese” 和
–enable-default-err-languages=”Simplify_Chinese” :指定出错是显示的错误页面为简体中文
–enable-poll :应启用Poll()函数而不是select()函数,通常而言poll(轮询)比select要好,但configure(脚本程序)已知Poll在某些平台下失效, 若你认为你比configure编译配置脚本程序要聪明的话,可以用这个选项启用Poll。总之就是用这个可以提升性能就是啦。
–enable-linux-netfilter :可以支持透明代理
–enable-underscore :允许解析的URL中出现下划先,因为默认squid会认为带下划线的URL地址是非法的,并拒绝访问该地址。
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默认被激活,假如你愿意,可以使用该选项来禁止该功能。









本文转自 jxwpx 51CTO博客,原文链接:http://blog.51cto.com/jxwpx/225209,如需转载请自行联系原作者
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
2月前
|
缓存 小程序 Android开发
mPaaS问题之更改包名之后就进不了小程序如何解决
mPaaS小程序是阿里巴巴移动平台服务(mPaaS)推出的一种轻量级应用解决方案,旨在帮助开发者快速构建跨平台的小程序应用;本合集将聚焦mPaaS小程序的开发流程、技术架构和最佳实践,以及如何解决开发中遇到的问题,从而助力开发者高效打造和维护小程序应用。
63 1
|
1天前
|
数据采集
检验代理ip是否有用的小办法
检验代理ip是否有用的小办法
|
8月前
|
应用服务中间件
【端口号清除工具】port is already in use解决利器,从此告别每次输入命令杀端口
【端口号清除工具】port is already in use解决利器,从此告别每次输入命令杀端口
81 0
|
Linux
安装pycuda的正确办法
安装pycuda的正确办法
604 0
|
存储 监控 前端开发
行动策略过于复杂怎么办?试试下面一些解决方法
随着使用SLS告警越来越深入,有些用户的行动策略会配置的特别复杂,有些时候可以让用户通过创建多个行动策略来进行一定的精简,但是在一些场景下,用户是无法创建多个行动策略的。
206 0
行动策略过于复杂怎么办?试试下面一些解决方法
|
XML Java 应用服务中间件
涨姿势!Tomcat服务器启动项目的几种方式使用说明
本文的写作缘由一个需要使用Tomcat服务器启动制定文件夹的项目。具体介绍了在Tomcat服务器中启动指定项目的三种方式,包括在server.xml中配置Context,在conf.Catalina.localhost新建xml文件和修改server中的appBase。通过对这三种方式的学习,我们可以很轻松的使用这三种方式启动指定的文件夹下的项目。
901 0
涨姿势!Tomcat服务器启动项目的几种方式使用说明
|
C++
VS平台的基本设置以及相关报错问题解决方法
在刚开始学习编程后,期间总会遇到问题,以前都是记录下来没有整理。现在积少成多,也乘着有空就在这里给整理一下。
130 0
|
Java 应用服务中间件 Apache
一招教你如何减少本地调试tomcat重启次数,亲测有效
一招教你如何减少本地调试tomcat重启次数,亲测有效
|
缓存 网络协议 Linux
如何用九条命令在一分钟内检查Linux服务器性能?
一、uptime命令 这个命令可以快速查看机器的负载情况。在Linux系统中,这些数据表示等待CPU资源的进程和阻塞在不可中断IO进程(进程状态为D)的数量。这些数据可以让我们对系统资源使用有一个宏观的了解。
1030 0