作者:手机用户2502876273 | 来源:互联网 | 2017-11-06 04:37
到目前看来,经过本文优化的squid2.5,其cpu占用率要优于squid3.0两倍,稳定性非常优秀。我就没对squid2.6进行过测试,因为这个2.5已经非常的不错了。在一个文件下载系统中,单机跑上1.5万的established没太大问题。安装的优化过程主要有两步:打上epoll补
到目前看来,经过本文优化的squid2.5,其cpu占用率要优于squid3.0两倍,稳定性非常优秀。我就没对squid2.6进行过测试,因为这个2.5已经非常的不错了。在一个文件下载系统中,单机跑上1.5万的established没太大问题。
安装的优化过程主要有两步:打上epoll补丁和利用上google_perftools,这些步骤都需要首先确保系统的内核在2.6以上。
1、安装epoll补丁
epoll补丁是比较难装的,因为它需要automake-1.5和autoconf-2.13,所以一般我都是大一个tgz包四处拷贝着用的,倒也没发现有什么问题。在这里我还是把编译安装过程整理一份吧,有兴趣的同僚可以一试。
我用来编译的这台机器操作系统是Red Hat Enterprise Linux Server release 5 (Tikanga),自己有automake1.5,不过我还是不知道怎么用这个1.5。
先安装autoconf2.13
cd /root
wget http://mirrors.kernel.org/gnu/autoconf/autoconf-2.13.tar.gz
tar -xzf autoconf-2.13.tar.gz
cd autoconf-2.13
./configure
make
make install
再安装automake1.5
cd /root
wget http://mirrors.kernel.org/gnu/automake/automake-1.5.tar.gz
tar -xzf automake-1.5.tar.gz
cd automake-1.5
./configure
make
make install
这两个东西都会安装到/usr/local/bin/下面,/usr/bin下面也有同样的文件,所以,为了让系统更好的识别,到这一步我执行:
su -
重新登录一下
下载epoll补丁,这个补丁在squid的官方站上有下载。
http://devel.squid-cache.org/old_projects.html#epoll
找了好久才找得到噢,如果下载不了,可以从sudone这里下。
http://www.sudone.com/download/squid_epoll.patch
然后去找一个squid2.5的最新版本下载
http://www.squid-cache.org/Versions/v2/2.5/squid-2.5.STABLE14.tar.bz2
我最近发现一个软件,叫讯雷,用它居然可以下载得很快噢,推荐给大家。
下完之后解开,然后先把补丁打上
cd squid-2.5.STABLE14
patch -p1 <../squid_epoll.patch
打完补丁后执行一下
./bootstrap.sh
检查一下,免得浪费时间去编译,如果看到是一堆warning,那么证明是可以编译成功的,否则虽然编译可通过,但编译出来的东西是不对的
开始configure,make,make install
./configure --prefix=/usr/local/squid --enable-async-io=256 --enable-cache-digests --disable-ident-lookup --enable-removal-policies=heap lru --disable-snmp --enable-dlmalloc --enable-kill-parent-hack --enable-underscores --enable-delay-pools --enable-epoll --disable-poll --disable-wccp --disable-select --with-maxfd=65535 --with-aio --with-large-files --enable-err-language=English, Simplify_Chinese --enable-default-err-language=Simplify_Chinese
make -j20
make install
执行完之后,可以执行这个命令检查结果:
strings /usr/local/squid/sbin/squid | grep epoll_ctl
如果看到有输出,那证明是万事大吉啦。
此时就编译好了一个支持epoll的squid,然后照着把配置文件和权限配好就可以启动使用了。我把squid下面share目录里的错误界面除了中文和英文其它的删除,然后打了几个包,可以直接下载使用。不过,这些包都是要放在相应的目录里才能使用,如果放在别的目录里,那要用ln -s做软链接链到相应目录就可以正常用了。
下载squid2.5_epoll_home.tgz(放在/home/squid目录)
下载squid2.5_epoll_usr_local.tgz(放在/usr/local/squid目录)
2、安装google_preftools
squid配合上这个东东,性能上是能有所提高的,不过具体的我也不清楚怎么测试,只是在某些系统上用上去之后,发现变得更稳定了。
在这里可以下载到最新的google_perftools
http://code.google.com/p/google-perftools/
安装它,我这里有现成的脚本
#!/bin/sh
if [ -s /usr/lib/libtcmalloc.so ]; then
echo google_perftools 已安装
else
if [ `uname -r|egrep -c ^2.6` -eq 1 ]; then
echo 安装google_perftools
cd ${BASE_DIR}download
wget -q http://google-perftools.googlecode.com/files/google-perftools-0.97.tar.gz
tar -zxf google-perftools-0.97.tar.gz
cd google-perftools-0.97
if [ `uname -m|grep -c 64` -eq 1 ]; then
./configure --prefix=/usr --enable-frame-pointers >& /dev/null
else
./configure --prefix=/usr >& /dev/null
fi
make -j10 >& /dev/null
make install >& /dev/null
cd $OLD_PWD
else
echo linux内核版本需要2.6以上才能安装google_perftools
fi
fi
#end
运行就能装好了,然后把squid启动命令换一下,并记得打开系统文件数限制
ulimit -n 65535
LD_PRELOAD=/usr/lib/libtcmalloc.so /usr/local/squid/sbin/squid -DV
启动成功就可以使用了,比较简单
配置文件我这里有一份通用的,拿去改改就行
这些工作做完之后,这个2.5的squid就变成了足够强的cache服务器,cpu占用率高的时候也仅有10%-20%,可负载的established数量估计可达2万。
--------------------
今天有朋友反应下载的二进制文件执行时出现段错误不能使用,因为我是在Redhat AS5上编译的,今天我用Redhat AS4重新编译了一次,在Redhat AS4/5、Ubuntu8.10/7.10/6.6、debian etch/testing下执行都没有问题了,如再有问题,可再email我。