TCmalloc对squid的性能的提升

标签: tcmalloc squid 性能 | 发表时间:2011-08-20 00:05 | 作者:祥哥哥 caoxg
出处:http://www.nb03.com/
           TCmalloc对squid的性能的提升

一、简介:

TCmalloc全称是Thread-Caching malloc,作者宣称tcmalloc相对于glibc2.3 malloc(aka ptmalloc2)有6倍的性能提高,tcmalloc的常用场景是用于加速MySQL,不过据Wikipedia的hacker Domas Mituzas说,tcmalloc不仅仅对MySQL起作用,对squid也同样起作用,不过目前正式版的squid并没有使用tcmalloc。

http://code.google.com/p/google-perftools/

二、安装

1、安装tcmalloc所需要的libunwind库 [32位系统不用安装]

# wget http://download.savannah.gnu.org/releases/libunwind/libunwind-0.99-alpha.tar.gz
# tar zxvf libunwind-0.99-alpha.tar.gz
# cd libunwind-0.99-alpha
# CFLAGS=-fPIC ./configure
# make CFLAGS=-fPIC
# make CFLAGS=-fPIC install

2、安装tcmalloc

# wget http://google-perftools.googlecode.com/files/google-perftools-1.7.tar.gz
# tar zxvf google-perftools-1.7.tar.gz
# google-perftools-1.7
# ./configure
# make
# make install
# echo '/usr/local/lib' >> /etc/ld.so.conf
# /sbin/ldconfig

3、安装squid

# wget http://www.squid-cache.org/Versions/v2/2.7/squid-2.7.STABLE9.tar.gz
# tar zxvf squid-2.7.STABLE9.tar.gz
# cd squid-2.7.STABLE9
# ./configure --prefix=/usr/local/squid --enable-dlmalloc --enable-gnuregex --enable-async-io --enable-storeio=aufs,diskd,ufs --enable-arp-acl --disable-htcp --enable-snmp --enable-ssl --enable-large-cache-files --disable-internal-dns --enable-linux-netfilter --disable-ident-lookups --enable-truncate --with-maxfd=65535 --enable-forw-via-db --enable-referer-log --enable-useragent-log --enable-delay-pools --enable-kill-parent-hack --disable-carp --disable-icmp --enable-follow-x-forwarded-for --enable-default-err-language=Simplify_Chinese –enable-err-languages=Simplify_Chinese --enable-epoll

*注意:据说加上’–with-large-files’ 选项时编译会出错。
# vi src/Makefile

1
2
3
4
5
6
7
8
squid_LDADD = \
        -L../lib \
        -ltcmalloc_minimal \
         \
……
data_DATA = \
        mib.txt
LDADD = -L../lib -lmiscutil -lpthread -lm -ltcmalloc_minimal

//红色部分为新加的部分。保存退出。

# make && make install

4、配置好squid并启动squid.

 

三、验证

# lsof | grep tcmalloc
squid 25548 root mem REG 8,3 872325 347206 /usr/local/lib/libtcmalloc_minimal.so.0.1.0
squid 25550 nobody mem REG 8,3 872325 347206 /usr/local/lib/libtcmalloc_minimal.so.0.1.0
dnsserver 25551 nobody mem REG 8,3 872325 347206 /usr/local/lib/libtcmalloc_minimal.so.0.1.0
dnsserver 25552 nobody mem REG 8,3 872325 347206 /usr/local/lib/libtcmalloc_minimal.so.0.1.0
dnsserver 25553 nobody mem REG 8,3 872325 347206 /usr/local/lib/libtcmalloc_minimal.so.0.1.0
dnsserver 25554 nobody mem REG 8,3 872325 347206 /usr/local/lib/libtcmalloc_minimal.so.0.1.0
dnsserver 25555 nobody mem REG 8,3 872325 347206 /usr/local/lib/libtcmalloc_minimal.so.0.1.0

 

四、压力测试

1、压力测试设备硬件
squid+tcmalloc: 20 型号:Dell R410 硬盘:2*SAS/146G/15K 内存:16G CPU:16
squid: 21 型号:Dell R410 硬盘:2*SAS/146G/15K 内存:16G CPU:16
http_load: 23 型号:Dell R410 硬盘:2*SAS/146G/15K 内存:16G CPU:16
http_load: 24 型号:Dell R410 硬盘:2*SAS/146G/15K 内存:16G CPU:16

 

2、压力测试
a、使用http_load压测软件。
b、参数:./http_load -parallel 1000 -fetches 72000000 -proxy $IP:80 1.txt
c、2台压力测试机同时对2台squid做压力测试,测试url约 15万条左右。
d、参考cacti里对应该设备的各项系统性能值。
f、参考http_load压测结果。

 

五、结果

1、cacti里数据图

安装tcmalloc的squid:

使用默认malloc的squid:

 

2、http_load 数据

tcmalloc:

72000000 fetches, 1000 max parallel, 8.7075e+11 bytes, in 9468.61 seconds
12093.7 mean bytes/connection
7604.07 fetches/sec, 9.19617e+07 bytes/sec
msecs/connect: 105.061 mean, 45012.3 max, 0.057 min
msecs/first-response: 21.9229 mean, 12735.5 max, 0.147 min
78 timeouts
4713 bad byte counts
HTTP response codes:
  code 200 -- 71966231
  code 404 -- 33691

malloc:

72000000 fetches, 1000 max parallel, 8.68734e+11 bytes, in 11421.9 seconds
12065.8 mean bytes/connection
6303.66 fetches/sec, 7.60584e+07 bytes/sec
msecs/connect: 127.434 mean, 45004.9 max, 0.05 min
msecs/first-response: 25.8337 mean, 25654.4 max, 0.154 min
454 timeouts
15137051 bad byte counts
HTTP response codes:
  code 200 -- 71777915
  code 404 -- 33825

3、squid里mgr:info数据
tcmalloc:

Request Hit Ratios:	5min: 100.0%, 60min: 99.3%
Byte Hit Ratios:	5min: 99.4%, 60min: 98.8%
Request Memory Hit Ratios:	5min: 100.0%, 60min: 100.0%
Request Disk Hit Ratios:	5min: 0.0%, 60min: 0.0%

malloc:

Request Hit Ratios:	5min: 100.0%, 60min: 99.8%
Byte Hit Ratios:	5min: 99.5%, 60min: 99.1%
Request Memory Hit Ratios:	5min: 23.5%, 60min: 23.4%
Request Disk Hit Ratios:	5min: 76.5%, 60min: 76.6%

 

六、分析

1、从cacti的数据图可以看出使用tcmalloc的squid,并发性能更加稳定,从出口流量可以看出基本稳定在 795Mb/s

2、从http_load的结果来看,tcmalloc的每秒处理的请求更多,bad byte counts 要少很多。

3、从squid的mgr:info来看,命中率都很高,要注意的是tcmalloc的命中全部是在内存上的。这点提升了他的性能。

 

原创文章,转载请注明: 转载自gjw_apparitor 博客

本文链接地址: TCmalloc对squid的性能的提升

相关 [tcmalloc squid 性能] 推荐:

TCmalloc对squid的性能的提升

- caoxg - 开心平淡对待每一天。热爱生活
           TCmalloc对squid的性能的提升一、简介:. 1、安装tcmalloc所需要的libunwind库 [32位系统不用安装]. *注意:据说加上’–with-large-files’ 选项时编译会出错. 4、配置好squid并启动squid.. squid+tcmalloc: 20 型号:Dell R410 硬盘:2*SAS/146G/15K 内存:16G CPU:16.

stunnel + squid 过墙

- - 移动开发 - ITeye博客
一台国外的Linux服务器. 软件介绍:  squid 高性能代理服务器  stunnel  TSL加密工具,因为我们的http都是明文传输的,所以必须使用工具对内容进行加密,才能躲过嗅探.  修改 stunnel.conf 默认位置  /etc/stunnel/. 只需修改 cert  位置为刚才 生成  stunnel.pem 的位置.

Tcmalloc源码分析(总括)

- cpy - 弯曲评论
Tcmalloc通过preload或者直接动态链接的方式对malloc等内存分配和释放函数进行截获并提供服务. Tcmalloc提供接口主要涵盖malloc.h的接口. 下面我将通过内存操作的基本流程,从分配开始到释放简单的分析tcmalloc的一些内部实现. 在tcmalloc中,内存分配malloc的入口为tc_malloc,new的入口为tc_new,相应的realloc,calloc,memalign,valloc等也有相应的入口.

自建CDN技术选型: squid varnish nginx

- - 鲁塔弗的博客
CDN的全称是Content Delivery Network,即内容分发网络. 其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定. 优化跨ISP网络访问速度,在国内大联通和大电信之间是世界上最远的距离,在国外,中国和其他地区很平行,用cdn可以优化全球响应速度.

squid,nginx,lighttpd反向代理的区别

- - 企业架构 - ITeye博客
[转载自]http://www.cnblogs.com/yihang/archive/2010/12/19/1910363.html. squid,nginx,lighttpd反向代理的区别. 反向代理从传输上分可以分为2种:. 1:同步模式(apache-mod_proxy和squid). 2:异步模式(lighttpd 和 nginx).

关于squid请求源服务器的响应中带Vary头

- - 淘宝核心系统团队博客
源服务器返回的响应头不带”Vary: Accept-Encoding”. 不管客户端请求头中带不带”Accept-Encoding: gzip,deflate”,squid会只缓存一份对象. 1)如果第一个MISS的请求,客户端请求头中带”Accept-Encoding: gzip,deflate”.

浅谈Squid在图片存储架构中的应用

- - 酷勤网-挖经验 [expanded by feedex.net]
酷勤网 � 程序员的那点事. 上一篇我表明了自己对缓存的立场:缓存一切可以缓存的资源. 并讨论了如何利用IIS自身的缓存功能来轻松满足中小规模的图片缓存需求. 关于IIS的客户端缓存和服务器端缓存的介绍大家可以回顾. 自从上一篇文章发表后,有不少朋友向我反馈:用IIS自身的缓存功能负载有限,建议使用.

使用squid定制企业上网行为管理系统

- - 启光博客
  场景:一台路由带约300台机器上网,内网服务器一台,内网ip192.168.6.172,其实这台机器还有个公网IP,为了避免部分网友逻辑混乱,先不提这个公网IP,如果只有内网IP也一样操作.   (1)使用Squid缓存部分常用资源,轻出口带宽压力.   (2)实现部分办公室职员和所有车间职员只允许访问邮箱和几个固定网站,中层领导和有其它需要的职员访问黑名单(淘宝、股票、游戏等)之外的网站,公司高层不受限制.

电子商务网站基础架构 nginx + memcached + tomcat + squid 集群

- - 企业架构 - ITeye博客
本文中 包含 nginx memcached tomcat 集群 的安装和配置. wget url 为下载所需的资源文件方式,也可以通过 VMware Tools 工具载入,. 如何安装 VMwareTools 参考本博客或者其他资料. 后面最后一章节是安装配置squid 在项目第一期不作要求. 第一章 安装配置nginx.

谈谈varnish,squid,apache,nginx缓存的对比

- - 行业应用 - ITeye博客
群里总是有人在问cache用什么,有varnish,squid,apache,nginx这几种,到底是我们用什么架构cache. varnish和squid是专业的cache服务,而apache,nginx这些都是第三方模块完成. 2、要做cache服务的话,我们肯定是要选择专业的cache服务,优先选择squid和varnish.