squid-2.7 HTTP1.1及TCMALLOC_Lee

来源:百度文库 编辑:神马文学网 时间:2024/04/29 04:26:15
squid-2.7 HTTP1.1及TCMALLOC2008-01-01 04:05    squid开发团队在发布了squid3S1之后宣布了squid2.7分支,很明显squid2.7应该是squid2的最后一个分支,一个过渡到squid3之前的一个分支,事实上,squid2.7是在squid2-HEAD这个版本基础上的一个分支,squid2-HEAD的一个重要改进就是尝试使用store_copy()代替了memcpy(),这大大提高了squid的性能。对squid2.7而言,另外一个重要的改进就是HTTP1.1的支持,不过,squid的开发者说,目前的squid对HTTP1.1的支持还是相当Primitive的,不过,这个已经是相当大的一个进步了,因为原来squid开发团队计划最早在squid3.1分支里支持HTTP1.1。为什么我这么关心squid是否支持HTTP1.1,因为HTTP1.1相比HTTP1.0的确有很多相当有吸引力的改进 。

       在使用squid2.7之后你会发现用IE通过squid访问诸如sina、163之类的网站时会出现问题,因为squid2.7对于HTTP1.1的处理已经跟以前版本的不一样了,解决办法有三个:
1、修改IE的设置:不要使用“通过代理连接使用HTTP1.1”
2、调整squid.conf:在http_port xxxx 后面加上http11
3、去掉squid2.7中的HTTP1.1的支持,把这个patch中所作的修改去掉

      TCmalloc全称是Thread-Caching malloc,作者宣称tcmalloc相对于glibc2.3 malloc(aka ptmalloc2)有6倍的性能提高,tcmalloc的常用场景是用于加速MySQL,不过据Wikipedia的hacker Domas Mituzas说,tcmalloc不仅仅对MySQL起作用,对squid也同样起作用,不过目前squid并没有official way来使用tcmalloc(个人估计tcmalloc的支持会在squid3.x中出现),所以如果要在现有版本中使用tcmalloc,需要对squid源代码做一定的修改,我用的是最简单的方法,修改Makefile:
先安装tcmalloc,然后正常configure squid,然后修改src/Makefile,在squid_LDADD后面加上-ltcmalloc,在LDADD后面也加上-ltcmalloc,正常编译,运行,然后执行lsof -n|grep tcmalloc,如果已经link到tcmalloc了,一般的输出如下:
squid      3593      root mem       REG        8,1   188140    7094281 /usr/local/lib/libtcmalloc.so.0
squid      3595    squid mem       REG        8,1   188140    7094281 /usr/local/lib/libtcmalloc.so.0
unlinkd    3596   squid mem       REG        8,1   188140    7094281 /usr/local/lib/libtcmalloc.so.0