【转】利用TCMalloc优化Nginx的性能
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的性能的更多相关文章
- 利用 TCMalloc 优化 Nginx 的性能
TCMalloc 全称为 Thread-Caching Malloc,是谷歌的开源工具 google-perftools 的成员,它可以 在内存分配效率和速度上高很多,可以很大程度提高服务器在高并发情 ...
- TCMalloc优化MySQL、Nginx内存管理
TCMalloc的全称为Thread-Caching Malloc,是谷歌开发的开源工具google-perftools中的一个成员. 与标准的glibc库的Malloc相比,TCMalloc库在内存 ...
- TCMalloc优化MySQL、Nginx、Redis内存管理
TCMalloc(Thread-Caching Malloc)与标准glibc库的malloc实现一样的功能,但是TCMalloc在效率和速度效率都比标准malloc高很多.TCMalloc是 goo ...
- Nginx的性能优化方案
nginx的优化 . gzip压缩优化 . expires缓存有还 . 网络IO事件模型优化 . 隐藏软件名称和版本号 . 防盗链优化 . 禁止恶意域名解析 . 禁止通过IP地址访问网站 . HTTP ...
- tcMalloc 配置和优化 nginx 高性能
tcMalloc优化nginx 记住:nginx一定要先启动 1>下载安装libunwind: #wget http://download.savannah.gnu.org/releases ...
- 利用(Tcmalloc) google-perftools优化Nginx和MySQL性能
一.安装libunwind wget http://download.savannah.gnu.org/releases/libunwind/libunwind-1.1.tar.gz 本地下载:htt ...
- 利用 gperftools 对nginx mysql 内存管理 性能优化
利用 gperftools 对nginx 与 mysql 进行 内存管理 性能优化 降低负载. Gperftools 是由谷歌开发.官方对gperftools 的介绍为: These tools ...
- 根据参数优化nginx的服务性能
一.优化nginx服务的worker进程数 在高并发.高访问量的Web服务场景,需要事先启动好更多的nginx进程,以保证快速响应并处理大量并发用户的请求. 1).优化nginx进程对应的配置 优化n ...
- Nginx优化之服务性能优化
优化Nginx服务的worker进程个数 修改nginx主配置文件 worker_processes 1; #指定了Nginx要开启的进程数,结尾数字就是进程个数 Nginx有Master进程和wor ...
随机推荐
- PHP中数据库的连接
<?php //1.链接MySQL服务器 $conn = mysql_connect("localhost", "root" , 199452); //2 ...
- mongodb基础用法
安装部分 mongodb配置方法 mongodb的安装目录 C:\MongoDB\Server\3.2\bin 创建以下目录 c:\mongo\log c:\mongo\db 创建mongodb的配置 ...
- Azkaban遇到的坑-installation Failed.Error chunking
在使用azkaban做spark作业调度时,在上传zip包时报installation Failed.Error chunking错误,原来是于我们所编写的应用会上传到 MySQL 存储,过大的zip ...
- Cassandra 之 入门
1.到官网下载压缩包. http://cassandra.apache.org/download/ 我下载的是最新的 apache-cassandra-2.1.2-bin.tar.gz 另外:语言支持 ...
- php字符串截取问题
希望将一个字符串限长显示,如果该字符串超过一定长数,就截取前n个字符,后加省略号. 但是在英文和汉字混合的情况下会出现如下问题: 如果有这样一个字符串 $str="这是一个字符串" ...
- 区间 (vijos 1439) 题解
[问题描述] 现给定n个闭区间[ai,bi],1<=i<=n.这些区间的并可以表示为一些不相交的闭区间的并.你的任务就是在这些表示方式中找出包含最少区间的方案.你的输出应该按照区间的升序排 ...
- 正整数转换成N进制的数组
给定一个正整数,按照N进制转换成数组元素存储 //给定一个整数,把它转换成按照N进制存储的数组 #include <stdio.h> #include <stdlib.h> # ...
- Moses 里的参数(未完成)
老师要求看看Moses里都有什么参数,调整了参数又会对翻译结果有什么影响,先将找到的参数列出来 首先是权重: [weight] WordPenalty0= LM= Distortion0= Phras ...
- 使用Android Studio开发J2SE项目方法
0.前言 最近因为要为项目开发一个底层的Java应用,所以非常偶然的遇到了这样一个问题,过去Eclipse有Java Project而现在手头使用Android Studio并不能直接建立Java应用 ...
- NFC Forum : Frequently Asked Questions (NFC 论坛:FAQ)
NFC for Business What is the NFC Forum? The NFC Forum is a not-for-profit industry organization whos ...