当前位置: 游戏平台 > 互联网科技 > 正文

centos 6.3 64bit用tcmalloc优化nginx

时间:2019-11-10 23:35来源:互联网科技
TCMalloc的齐全部是 Thread-CachingMalloc,是Google支付的开源工具google-perftools中的八个成员。与正式的glibc库的Malloc相比较,TCMalloc库在内部存款和储蓄器分配效用和进程上要高非常多,这在比

TCMalloc的齐全部是 Thread-Caching Malloc,是Google支付的开源工具google-perftools中的八个成员。与正式的glibc库的Malloc相比较,TCMalloc库在内部存款和储蓄器分配效用和进程上要高非常多,这在比极大程度上加强了服务器在高并发情状下的性质,进而减弱了系统的载荷。下边简介怎么样为Nginx增添TCMalloc库补助

centos 6.3 64bit用tcmalloc优化nginx

大器晚成、编写翻译安装进度优化

要安装TCMalloc库,要求安装libunwind 和 gperftools八个软件包,libunwind库为依附64为CPU何操作系统的程序提供了宗旨函数调用链和函数调用贮存器作用,三十二位操作系统部必要设置。

 

1.减小Nginx编写翻译后的文件大小

在编写翻译Nginx时,暗中认可以debug形式举行,而在debug格局下会插入超多追踪和ASSERT之类的新闻,编写翻译完毕后,多个Nginx要有好几兆字节。在编写翻译前收回Nginx的debug形式,编译达成后Nginx独有几百千字节,因而能够在编写翻译从前,纠正有关源码,废除debug格局,具体方法如下:

在Nginx源码文件被解压后,找到源码目录下的auto/cc/gcc文件,在里头找到如下几行:

  1. # debug  
  2. CFLAGS=”$CFLAGS -g”  

讲授掉或删掉这两行,就可以收回debug情势。

1.安装libunwind库

生机勃勃,tcmalloc全称thread-caching malloc,是Google开垦的开源工具。与专门的学业的glibc库的malloc比。tcmalloc在内部存款和储蓄器分配功效和进程比malloc高。至于缘何比malloc,有意思味可以参照。上边那么些网站。

2.为特定的CPU钦命CPU类型编写翻译优化

在编写翻译Nginx时,私下认可的GCC编译参数是“-O”,要优化GCC编写翻译,能够采取以下七个参数:

--with-cc-opt='-O3'

--with-cpu-opt=CPU  #为特定的 CPU 编写翻译,有效的值饱含:pentium, pentiumpro, pentium3, pentium4, athlon, opteron, amd64, sparc32, sparc64, ppc64

要鲜明CPU类型,能够通过如下命令: 

[root@localhost home]#cat /proc/cpuinfo | grep "model name"

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

 

二、利用TCMalloc优化Nginx的性能

TCMalloc的齐全为Thread-Caching Malloc,是谷歌(Google卡塔 尔(英语:State of Qatar)支付的开源工具“google-perftools”中的三个成员。与标准的glibc库的malloc相比较,TCMalloc库在内部存款和储蓄器分配功效和速度上要高相当多,那在非常的大程度上加强了服务器在高并发情况下的属性,进而裁减系统负荷。上边简要介绍怎样为Nginx增加TCMalloc库扶助。

要设置TCMalloc库,必要安装libunwind(30人操作系统无需安装卡塔尔和google-perftools八个软件包,libunwind库为基于陆10个人CPU和操作系统的次序提供了中心函数调用链和函数调用贮存器成效。下边介绍利用TCMalloc优化Nginx的具体操作进度:

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

二,以后启幕介绍在64bit centos 6.3的本子中让nginx使用tcmalloc。需求运用的软件都早就上传到附属类小零器件中。

1.安装libunwind库

可以从下载相应的libunwind版本,这里下载的是libunwind-0.99-阿尔法.tar.gz,安装进度如下:

 

  1. [root@localhost home]#tar zxvf libunwind-0.99-alpha.tar.gz  
  2. [root@localhost home]# cd libunwind-0.99-alpha/  
  3. [root@localhost libunwind-0.99-alpha]#CFLAGS=-fPIC ./configure  
  4. [root@localhost libunwind-0.99-alpha]#make CFLAGS=-fPIC  
  5. [root@localhost libunwind-0.99-alpha]#make CFLAGS=-fPIC install  

 

三,安装libunwind库。  

2.安装google-perftools

可以从http://google-perftools.googlecode.com下载相应的google-perftools版本,这里下载的是google-perftools-1.8.tar.gz,安装过程如下:

 

  1. [root@localhost home]#tar zxvf google-perftools-1.8.tar.gz  
  2. [root@localhost home]#cd google-perftools-1.8/  
  3. [root@localhost google-perftools-1.8]# ./configure  
  4. [root@localhost google-perftools-1.8]#make && make install  
  5. [root@localhost google-perftools-1.8]#echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_互联网,lib.conf  
  6. [root@localhost google-perftools-1.8]# ldconfig  

至此,google-perftools安装达成。

免费下载地址在

# tar xf libunwind-1.0.tar.gz 

3.再一次编写翻译Nginx

为了使Nginx协理google-perftools,供给在设置进度中增加“–with-google_perftools_module”选项重新编写翻译Nginx,安装代码如下:

 

  1. [root@localhostnginx-0.7.65]#./configure   
  2. >--with-google_perftools_module --with-http_stub_status_module  --prefix=/opt/nginx  
  3. [root@localhost nginx-0.7.65]#make  
  4. [root@localhost nginx-0.7.65]#make install  

到那边Nginx安装实现。

顾客名与密码都是www.linuxidc.com

# tar xf libunwind-1.0 

4.为google-perftools增添线程目录

创制贰个线程目录,这里将文件放在/tmp/tcmalloc下,操作如下:

 

  1. [root@localhost home]#mkdir /tmp/tcmalloc  
  2. [root@localhost home]#chmod 0777 /tmp/tcmalloc  

实际下载目录在 /二〇一一年龄经历料/11月/二十八日/利用TCMalloc优化Nginx的天性

#CFLAGS=-fPIC ./configure增多编写翻译参数 

5.校订Nginx主配置文件

校勘nginx.conf文件,在pid那行的上边增加如下代码:

 

  1. #pid        logs/nginx.pid;  
  2. google_perftools_profiles /tmp/tcmalloc;  

接着,重启Nginx,完成google-perftools的加载。


# make CFLAGS=-fPIC 

6.验证运行景况

为了表明google-perftools已经常见加载,通过如下命令查看:

 

  1. [root@ localhost home]# lsof -n | grep tcmalloc  
  2. nginx      2395 nobody   9w  REG    8,8       0    1599440 /tmp/tcmalloc.2395  
  3. nginx      2396 nobody   11w REG   8,8       0    1599443 /tmp/tcmalloc.2396  
  4. nginx      2397 nobody   13w REG  8,8        0    1599441  /tmp/tcmalloc.2397  
  5. nginx     2398 nobody    15w REG  8,8     0    1599442 /tmp/tcmalloc.2398  

鉴于在Nginx配置文件中,设置worker_processes的值为4,因而开启了4个Nginx线程,各样线程会有豆蔻年华行记录。每种线程文件前面包车型大巴数字值正是开发银行的Nginx的PID值。

迄今甘休,利用TCMalloc优化Nginx的操作实现。

设置进程如下:

# make CFLAGS=-fPIC install 

三、Nginx内核参数优化

水源参数的优化,首假若在Linux系统中针对Nginx应用而实行的体系基本参数优化,平淡无奇的优化参数值如下。

下边给出三个优化实例以供参照他事他说加以考察:

  1. net.ipv4.tcp_max_tw_buckets = 6000 
  2. net.ipv4.ip_local_port_range = 1024 65000  
  3. net.ipv4.tcp_tw_recycle = 1 
  4. net.ipv4.tcp_tw_reuse = 1 
  5. net.ipv4.tcp_syncookies = 1 
  6. net.core.somaxconn = 262144 
  7. net.core.netdev_max_backlog = 262144 
  8. net.ipv4.tcp_max_orphans = 262144 
  9. net.ipv4.tcp_max_syn_backlog = 262144 
  10. net.ipv4.tcp_synack_retries = 1 
  11. net.ipv4.tcp_syn_retries = 1 
  12. net.ipv4.tcp_fin_timeout = 1 
  13. net.ipv4.tcp_keepalive_time = 30 

将方面的根本参数值参与/etc/sysctl.conf文件中,然后推行如下命令使之生效:

[root@ localhost home]#/sbin/sysctl -p

下边是对实例中接纳的含义举行介绍:

 net.ipv4.tcp_max_tw_buckets参数用来设定timewait的数码,私下认可是180000,这里设为6000。

 net.ipv4.ip_local_port_range选项用来设定允许系统张开的端口范围。

 net.ipv4.tcp_tw_recycle选项用于安装启用timewait连忙回笼。

 net.ipv4.tcp_tw_reuse选项用于安装开启重用,允许将TIME-WAIT sockets重新用于新的TCP连接。

 net.ipv4.tcp_syncookies选项用于安装开启SYN Cookies,当现身SYN等待队列溢出时,启用cookies实行管理。

 net.core.somaxconn选项暗许值是128, 那么些参数用于调治系统还要提倡的tcp连接数,在高并发的呼吁中,暗中认可的值也许会促成链接超时或许重传,由此,须要组合併发需要数来调度此值。

 net.core.netdev_max_backlog选项表示当各种网络接口接纳数据包的速率比内核管理那些包的速率快时,允许发送到队列的数据包的最大额。

 net.ipv4.tcp_max_orphans选项用于设定系统中最多有稍许个TCP套接字不被提到到此外叁个客户文件句柄上。如若超过那一个数字,孤立连接将及时被重新初始化并打字与印刷出警告新闻。那一个约束只是为着幸免轻易的DoS攻击。无法过分注重那些范围依旧人为减小这几个值,越来越多的情况是增添那么些值。

 net.ipv4.tcp_max_syn_backlog选项用于记录那多少个未有接到客商端确认音信的一连央求的最大值。对于有128MB内部存款和储蓄器的系统来讲,此参数的私下认可值是1024,对小内部存款和储蓄器的系统则是128。

 net.ipv4.tcp_synack_retries参数的值决定了基石放任连接在此之前发送SYN+ACK包的数码。

 net.ipv4.tcp_syn_retries选项表示在基本摈弃创建连接在此之前发送SYN包的数据。

 net.ipv4.tcp_fin_timeout选项决定了套接字保持在FIN-WAIT-2状态的年月。默许值是60秒。正确安装那个值相当的重大,有的时候候纵然叁个载重超级小的Web服务器,也会现身因为大气的死套接字而发出内部存储器溢出的高风险。

 net.ipv4.tcp_keepalive_time选项表示当keepalive启用的时候,TCP发送keepalive新闻的频度。暗中认可值是2(单位是刻钟卡塔 尔(阿拉伯语:قطر‎。

tar -xvf libunwind-1.1.tar.gz

  www.2cto.com  

cd libunwind-1.1

这么施行会并发如下错误:

CFLAGS=-fPIC ./configure

libtool: install: error: relink `libunwind-setjmp.la' with the above command before installing it 

make CFLAGS=-fPIC

make[3]: *** [install-libLTLIBRARIES] Error 1 

make CFLAGS=-fPIC install

make[3]: Leaving directory `/down/libunwind-1.0/src' 

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

make[2]: *** [install-am] Error 2 

tar -xvf gperftools-2.0.tar.gz

make[2]: Leaving directory `/down/libunwind-1.0/src' 

cd gperftools-2.0

make[1]: *** [install] Error 2 

./configure

make[1]: Leaving directory `/down/libunwind-1.0/src' 

make && make install

make: *** [install-recursive] Error 1 

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

 

ldconfig

发生这种难点的原故:autotools包容性的难题,运营命令autoreconf -i -f  ,在重新编写翻译安装下。

支持gperftools安装到位

#autoreconf -i -f 

3.双重编写翻译Nginx.

#make clean 

./configure --prefix=/usr/local/nginx   钦点nginx的装置目录

#CFLAGS=-fPIC ./configure 

--with-http_stub_status_module   启用nginx的status功用,能够监督nginx当前情况

#make  CFLAGS=-fPIC  

编辑:互联网科技 本文来源:centos 6.3 64bit用tcmalloc优化nginx

关键词: