sudone.com 服务器系统架构分析日志


squid2.5的性能优化过程和squid.tgz下载

[2009-08-24 21:33:32]
到目前看来,经过本文优化的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我。

站名:sudone.com; 站长:Ayou; 服务器:ubuntu+nginx+squid+php