专栏首页北京马哥教育利用TCMalloc优化Nginx的性能

利用TCMalloc优化Nginx的性能

一、TCMalloc介绍

1、TCMalloc介绍 TCMalloc的全称是Thread-Caching Malloc,是谷歌开发的开源工具google-perftools中的一个成员。与标准的glibc库的Malloc相比,TCMalloc库在内存分配效率和速度上要高很多,这在很大程序上提高了服务器在高并发情况下的性能,从而降低系统的负载。 如何为Nginx添加TCMalloc库支持,要安装TCMalloc库,需要安装libunwind和gperftools两个软件包,libunwind库为基于64为CPU操作系统的程序提供了基本函数调用链和函数调用函数寄存器功能,32位操作系统不需要安装。

2、文件介绍

libunwind

libunwind官网:http://www.nongnu.org/libunwind/

libunwind下载:http://down.shshenchu.com/libunwind-1.1.tar.gz

gperftools

gperftools官网:http://code.google.com/p/gperftools/downloads/list

gperftools下载:http://down.shshenchu.com/gperftools-2.1.tar.gz

二、安装配置

1.安装libunwind库

wget http://down.shshenchu.com/libunwind-1.1.tar.gz    //下载libunwindtar -zxvf libunwind-1.1.tar.gz    //解压libunwindcd libunwind-1.1CFLAGS=-fPIC ./configuremake CFLAGS=-fPICmake CFLAGS=-fPIC install

2.安装gperftools

wget http://down.shshenchu.com/gperftools-2.1.tar.gz    //下载gperftoolstar -zxvf gperftools-2.1.tar.gz     //解压gperftoolscd gperftools-2.1./configuremake && make installecho "/usr/local/lib" >> /etc/ld.so.conf.d/usr_local_lib.confldconfig

支持gperftools安装完成

3.编译Nginx

编译的时候添加–with-google_perftools_module

4.为gperftools添加线程目录

创建一个线程目录

mkdir /tmp/tcmallocchmod 0777 /tmp/tcmalloc

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

google_perftools_profiles /tmp/tcmalloc;

6.验证运行状态

为了验证gperftools已经正常加载,可以如下命令查看:

[root@localhost public_html]# lsof -n | grep tcmallocnginx     32572     www   14w      REG                8,1        0      27102 /tmp/tcmalloc.32572nginx     32573     www   18w      REG                8,1        0      27106 /tmp/tcmalloc.32573

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

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

本文分享自微信公众号 - 马哥Linux运维(magedu-Linux)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2015-02-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 11 个鲜为人知的 Linux 命令

    英文:Tecmint,编译:Linux中国 linux.cn/article-2258-1.html Linux命令行吸引了大多数Linux爱好者。一个正常的...

    小小科
  • 记一次内存占用问题的调查过程

    马哥linux运维 | 最专业的linux培训机构 ---- 最近在维护一台CentOS服务器的时候,发现内存无端"损失"了许多,free和ps统计的结果相差...

    小小科
  • Python 中的装饰器

    一, 引用 [书] 流畅的Python [书] Effective Python 二, 基本概念 问题1:装饰器是什么? 解答: 严格来说,装饰器只是语法糖,...

    小小科
  • 【DB笔试面试589】在Oracle中,什么是半连接(Semi Join)?

    半连接(Semi Join)是一种特殊的连接类型,当做子查询展开时,Oracle经常会把那些外部WHERE条件为EXISTS、IN或= ANY的子查询转换为对应...

    小麦苗DBA宝典
  • Unity高级开发-光照系统(六)- 加速Lightmap烘焙速度

    从Unity 5.0版本我们推出了Enlighten烘焙系统,在Unity 5.6版本开始增加了Progressive烘焙系统作为备选,但是直到Unity 20...

    雷潮
  • Mybatis Mapper 接口源码解析

    在使用 Mybatis 的时候,我们只需要写对应的接口,即dao层的Mapper接口,不用写实现类,Mybatis 就能根据接口中对应的方法名称找到 xml 文...

    Java技术大杂烩
  • 7.4.1 程序查询方式

    信息交换的控制完全由主机执行程序实现,程序查询方式接口中设置一个数据缓冲寄存器(数据端口)和一个设备状态寄存器(状态端口)。当主机进行I/O操作时,首先发出询问...

    week
  • Java Lambda表达式

    Java Lambda表达式是Java8中的新特性。Java lambda表达式是Java进入函数式编程的第一步。因此,Java lambda表达式是可以单...

    三分恶
  • 第23次文章:结构性模式

    前面三期我们主要介绍了4中创建型模式:单例模式、工厂模式、建造者模式、原生模式。这周我们开始进入下一大块儿的模式学习——结构性模式。

    鹏-程-万-里
  • MySQL实战上车,Github仓库Star起来

    今天开了个MySQL学习仓库Up-Up-MySQL,这是一个学习MySQL从入门实战到理论完善,再到精通的一个仓库,后面会把MySQL的学习资料上传上去!欢迎大...

    公众号guangcity

扫码关注云+社区

领取腾讯云代金券