From: http://www.linuxidc.com/Linux/2013-04/83197.html

TCMalloc的全称是 Thread-Caching Malloc,是谷歌开发的开源工具google-perftools中的一个成员。与标准的glibc库的Malloc相比,TCMalloc库在内存 分配效率和速度上要高很多,这在很大程度上提高了服务器在高并发情况下的性能,从而降低了系统的负载。下面简单介绍如何为Nginx添加TCMalloc 库支持

要安装TCMalloc库,需要安装libunwind 和 gperftools两个软件包,libunwind库为基于64为CPU何操作系统的程序提供了基本函数调用链和函数调用寄存器功能,32位操作系统部需要安装。

1.安装libunwind库

可以从LinuxIDC.com的FTP下载libunwind-1.1.tar.gz

libunwind-1.1.tar.gz下载地址:

免费下载地址在 http://linux.linuxidc.com/

用户名与密码都是www.linuxidc.com

具体下载目录在 /2013年资料/4月/21日/利用TCMalloc优化Nginx的性能

------------------------------------------------------------------------------

安装过程如下:

tar -xvf libunwind-1.1.tar.gz

cd libunwind-1.1

CFLAGS=-fPIC ./configure

make CFLAGS=-fPIC

make CFLAGS=-fPIC install

fPIC告诉编译器产生与位置无关代码(Position-Independent Code),则产生的代码中,没有绝对地址,全部使用相对地址,故而代码可以被加载器加载到内存的任意位置,都可以正确的执行。这正是共享库所要求的,共享库被加载时,在内存的位置不是固定的。

2.安装gperftools 可以从 这里 下载2.0版本

tar -xvf gperftools-2.0.tar.gz

cd gperftools-2.0

./configure

make && make install

echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf

ldconfig

支持gperftools安装完成

(by chng: because the only thing we need to do is adding the /lib/ path into configuration, without downloading the src (since GFW you know that...), just yum/apt-get/zypper install google-perftools (and maybe libgoogle-perftools-dev) is OK. )

3.重新编译Nginx.

./configure --prefix=/usr/local/nginx \  指定nginx的安装目录

--with-http_stub_status_module \  启用nginx的status功能,可以监控nginx当前状态

--with-http_gzip_static_module \  支持在线实时压缩输出数据流

--with-google_perftools_module \  支持TCMalloc对Nginx性能的优化

make && make install

到这里Nginx安装完成。

4.为gperftools添加线程目录

创建一个线程目录,这里讲文件放在/tmp/tcmalloc下。操作如下:

mkdir /tmp/tcmalloc

chmod 0777 /tmp/tcmalloc

5.修改nginx主配置文件,在pid这行的下面添加如下代码:

#pid  logs/nginx.pid;

google_perftools_profiles /tmp/tcmalloc;

接着重启nginx即可完成gperftools的加载。

6.验证运行状态

为了验证gperft

#pid  logs/nginx.pid;

google_perftools_profiles /tmp/tcmalloc;

(by chng:pay attention that it is '_' instead of '-'.

see src/misc/ngx_google_perftools_module.c line 30-40:

 static ngx_command_t  ngx_google_perftools_commands[] = {

      { ngx_string("google_perftools_profiles"),
NGX_MAIN_CONF|NGX_DIRECT_CONF|NGX_CONF_TAKE1,
ngx_conf_set_str_slot,
,
offsetof(ngx_google_perftools_conf_t, profiles),
NULL }, ngx_null_command
};

)

接着重启nginx即可完成gperftools的加载。

ools已经正常加载,可以通过如下命令查看:

lsof -n | grep tcmalloc

nginx    2395 nobody    9w REG    8,8    0    1599440 /tmp/tcmalloc.2395

nginx    2396 nobody    11w REG    8,8    0    1599443 /tmp/tcmalloc.2396

nginx    2397 nobody    13w REG    8,8    0    1599441 /tmp/tcmalloc.2397

nginx    2398 nobody    15w REG    8,8    0    1599442 /tmp/tcmalloc.2398

由于在Nginx配置文件中设置worker_processes的值为4 ,因此开启了4个Nginx线程,每个线程都会有一行记录。每个线程文件后面的数字值就是启动Nginx的pid值。

至此,利用TCMalloc优化Nginx的操作完成。

下面还有对Nginx内核参数的优化。也来给大家分享下。见 http://www.linuxidc.com/Linux/2013-04/83198.htm

【转】利用TCMalloc优化Nginx的性能的更多相关文章

  1. 利用 TCMalloc 优化 Nginx 的性能

    TCMalloc 全称为 Thread-Caching Malloc,是谷歌的开源工具 google-perftools 的成员,它可以 在内存分配效率和速度上高很多,可以很大程度提高服务器在高并发情 ...

  2. TCMalloc优化MySQL、Nginx内存管理

    TCMalloc的全称为Thread-Caching Malloc,是谷歌开发的开源工具google-perftools中的一个成员. 与标准的glibc库的Malloc相比,TCMalloc库在内存 ...

  3. TCMalloc优化MySQL、Nginx、Redis内存管理

    TCMalloc(Thread-Caching Malloc)与标准glibc库的malloc实现一样的功能,但是TCMalloc在效率和速度效率都比标准malloc高很多.TCMalloc是 goo ...

  4. Nginx的性能优化方案

    nginx的优化 . gzip压缩优化 . expires缓存有还 . 网络IO事件模型优化 . 隐藏软件名称和版本号 . 防盗链优化 . 禁止恶意域名解析 . 禁止通过IP地址访问网站 . HTTP ...

  5. tcMalloc 配置和优化 nginx 高性能

    tcMalloc优化nginx  记住:nginx一定要先启动 1>下载安装libunwind: #wget  http://download.savannah.gnu.org/releases ...

  6. 利用(Tcmalloc) google-perftools优化Nginx和MySQL性能

    一.安装libunwind wget http://download.savannah.gnu.org/releases/libunwind/libunwind-1.1.tar.gz 本地下载:htt ...

  7. 利用 gperftools 对nginx mysql 内存管理 性能优化

    利用 gperftools 对nginx 与 mysql  进行 内存管理  性能优化 降低负载. Gperftools 是由谷歌开发.官方对gperftools 的介绍为: These tools ...

  8. 根据参数优化nginx的服务性能

    一.优化nginx服务的worker进程数 在高并发.高访问量的Web服务场景,需要事先启动好更多的nginx进程,以保证快速响应并处理大量并发用户的请求. 1).优化nginx进程对应的配置 优化n ...

  9. Nginx优化之服务性能优化

    优化Nginx服务的worker进程个数 修改nginx主配置文件 worker_processes 1; #指定了Nginx要开启的进程数,结尾数字就是进程个数 Nginx有Master进程和wor ...

随机推荐

  1. PHP基础笔记汇总

    一.PHP简介PHP:超文本预处理器(译者注:PHP: Hypertext Preprocessor,递归命名)PHP 是一种服务器端的脚本语言,类似 ASPPHP 文件的文件后缀是 ".p ...

  2. php文件上传的例子

    1.上传表单 upload.html 程序代码 [html] view plaincopy <form enctype="multipart/form-data" actio ...

  3. 新浪微博登录界面上下拉伸图片--第三方开源--PullToZoomListViewEx(二)

    这是PullZoomView在ScrollView实现,Android PullZoomView在ScrollView的实现是:PullToZoomScrollViewEx 下载地址:https:// ...

  4. 删:Centos 7安装Nginx 1.8

    [CentOS 7] 安装nginx! 首先进行 nginx yum Nginx安装记录 注意:如果用源码安装,nginx配置时需要指定--with-pcer对应的压缩包路径,如果使用二进制安装不需要 ...

  5. IOS学习3

    @property属性使用 copy:NSString strong: 一般对象 weak: UI空间 assign:基本数据类型 retain: (对象,先上述类型使用) id 万能指针. id缺点 ...

  6. Javascript 插件统一的实现步骤

    步骤: // 1. 定义立即调用的函数 +function($){ "use strict"; //使用严格模式ES5支持 //后续步骤 // 2. xx 插件类及原型方法的定义 ...

  7. IT新人论成长

    说自己是新人,其实自己也不新了,2012年毕业,辗转3个城市,现在在上海一家公司,工资不到5K. 在来现在公司之前,我从事web后台开发,采用MVC模式,虽然做了不少的网站,但感觉自己的水平还是在底层 ...

  8. xdebug

    必须的有4个(remote_enable 默认没开,所以必要),其它默认值一般可以xdebug.remote_enable=On; //这个是必须xdebug.remote_host=192.168. ...

  9. HTML5 API 之 history

    *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...

  10. SQL基础篇----select语句与排序问题

    一.检索--输出所有的列 SELECT * FROM my_friends WHEREfirst_name = 'cake'; 知识点1 * 代表选择出所有的行-----(什么行呢?)就是first_ ...