gperftools优化nginx(内存)

说明:

操作系统:       CentOS 6.5 64bit (虚拟机)
nginx安装路径:    /data/apps/nginx
配置文件路径:     /data/apps/nginx/conf/nginx.conf
nginx源码包:     /data/softwrare/nginx-1.8.1

1、下载软件包

libunwind:    http://download.savannah.gnu.org/releases/libunwind/ 
gperftools:   https://github.com/gperftools/gperftools/releases

2、安装libunwind

#cd /data/software
#tar -xvf libunwind-1.1.tar.gz
#cd libunwind-1.1
#CFLAGS=-fPIC ./configure --enable-shared 
#make CFLAGS=-fPIC
#make CFLAGS=-fPIC install

3、安装gperftools

#cd /data/software
#tar -xvf gperftools-2.5.tar.gz
#cd gperftools-2.5
#./configure --enable-shared && make && make install

4、配置gperftools

#echo "/usr/local/lib" >>/etc/ld.so.conf   (注:如果先安装nginx可不运行)
#ldconfig

5、与nginx配置编译

添加--with-google_perftools_module参数

#cd nginx-1.8.1
#./configure --prefix=/data/apps/nginx --conf-path=/data/apps/nginx/conf/nginx.conf --error-log-path=/data/logs/nginxlogs/error.log --http-log-path=/data/logs/nginxlogs/access.log --pid-path=/data/apps/nginx/run/nginx.pid --user=website --group=website --with-http_ssl_module --with-http_spdy_module --with-http_addition_module --with-http_sub_module --with-pcre=/data/software/pcre-8.39 --with-zlib=/data/software/zlib-1.2.8 --with-openssl=/data/software/openssl-1.0.2j/ --http-client-body-temp-path=/data/apps/nginx/temp/client_body_temp --http-proxy-temp-path=/data/apps/nginx/temp/proxy_temp --http-fastcgi-temp-path=/data/apps/nginx/temp/fastcgi_temp --http-uwsgi-temp-path=/data/apps/nginx/temp/uwsgi_temp --http-scgi-temp-path=/data/apps/nginx/temp/scgi_temp --with-google_perftools_module
#make && make install

6、配置、测试nginx

#vim /data/apps/nginx/conf/nginx.conf
在#pid logs/nginx.pid;增加
google_perftools_profiles /data/temp/tcmalloc/;

#service nginx reload

#lsof -n |grep tcmalloc
#lsof -i tcp:80
COMMAND   PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx   20119    root    6u  IPv4 425316      0t0  TCP *:http (LISTEN)
nginx   20120 website    6u  IPv4 425316      0t0  TCP *:http (LISTEN)
nginx   20121 website    6u  IPv4 425316      0t0  TCP *:http (LISTEN)
nginx   20122 website    6u  IPv4 425316      0t0  TCP *:http (LISTEN)
nginx   20123 website    6u  IPv4 425316      0t0  TCP *:http (LISTEN)
时间: 2024-10-27 11:48:50

gperftools优化nginx(内存)的相关文章

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

TCMalloc(Thread-Caching Malloc)与标准glibc库的malloc实现一样的功能,但是TCMalloc在效率和速度效率都比标准malloc高很多.TCMalloc是google-perftools工具中的一个(gperftools四个工具分别是:TCMalloc.heap-checker.heap-profiler和cpu-profiler),这个工具是开源的,以源码形式发布.如果觉得自己维护一个内存分配器麻烦的话,可以考虑将TCMalloc静态库连接到你的程序中.使

利用TCMalloc优化Nginx性能

技术说明: TCMalloc 全称Thread-Cachig Malloc,是谷歌开发的开源工具Google-preftools中的一个成员.与标准的glibc库的Malloc相比,TCMalloc库在内存分配效率和速度上要高很多,在很大程度上提高了服务器在高并发情况下的性能,从而降低了系统的负载. 一.安装libunwind: 1.安装libunwind: http://download.savannah.gnu.org/releases/libunwind/ 下载libunwind-0.99

如何验证 jemalloc 优化 Nginx 是否生效

Jemalloc 源于 Jason Evans 2006年在 BSDcan conference 发表的论文:<A Scalable Concurrent malloc Implementation for FreeBSD>.Jason 认为 phkmalloc(FreeBSD's previous malloc implementation by Kamp (1998))没有考虑多处理器的情况,因此在多线程并发下性能低下(事实如此),而 Jemalloc 适合多线程下内存分配管理.从2007

Tcmalloc优化Mysql内存管理

TCMalloc是什么? TCMalloc(Thread-Caching Malloc)与标准glibc库的malloc实现一样的功能,但是TCMalloc在效率和速度效率都比标准malloc高很多.TCMalloc是google-perftools工具中的一个(gperftools四个工具分别是:TCMalloc.heap-checker.heap-profiler和cpu-profiler),这个工具是开源的,以源码形式发布.如果觉得自己维护一个内存分配器麻烦的话,可以考虑将TCMalloc

[NGINX] - 配置文件优化 - NGINX.CONF

Nginx 本文主要针对公司的Nginx负载均衡配置进行解释,配置文件在最下方.因为公司没有使用PHP,所以NGINX里面并没有太多facgi模块相关优化  NGINX.CONF user 语法: user user[group]; 标签: main 定义user和工作group 进程使用的凭证.如果group省略,user则使用名称等于的组. worker_processes 1 句法: worker_processes number | auto; 2 默认: worker_processe

浅谈tomcat优化(内存,并发,缓存,安全,网络,系统等)

一.Tomcat内存优化 Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 java_OPTS 参数 JAVA_OPTS参数说明 -server 启用jdk 的 server 版 -Xms java虚拟机初始化时的最小内存 -Xmx java虚拟机可使用的最大内存 -XX: PermSize 内存永久保留区域 -XX:MaxPermSize 内存最大永久保留区域 3.配置示例:JAVA_OPTS='-Xms1024m

nginx内存池

一.设计原则 (1)减少内存碎片 (2)减少向操作系统申请内存的次数 (3)降低各个模块的开发效率 二.源码结构 struct ngx_pool_s { ngx_pool_data_t       d; size_t                max; ngx_pool_t           *current; ngx_chain_t          *chain; ngx_pool_large_t     *large; ngx_pool_cleanup_t   *cleanup; n

原子操作&amp;优化和内存屏障

原子操作 假定运行在两个CPU上的两个内核控制路径试图执行非原子操作同时"读-修改-写"同一存储器单元.首先,两个CPU都试图读同一单元,但是存储器仲裁器插手,只允许其中的一个访问而让另一个延迟.然而,当第一个读操作已经完成后,延迟的CPU从那个存储器单元正好读到同一个(旧)值.然后,两个CPU都试图向那个存储器单元写一新值,总线存储器访问再一次被存储器仲裁器串行化,最终,两个写操作都成功.但是,全局的结果是不对的,因为两个CPU写入同一(新)值.因此,两个交错的"读-修改-

Nginx 内存池管理

概述 Nginx 使用内存池对内存进行管理,内存管理的实现类似于前面文章介绍的<STL源码剖析--空间配置器>,把内存分配归结为大内存分配 和 小内存分配.若申请的内存大小比同页的内存池最大值 max 还大,则是大内存分配,否则为小内存分配. 大块内存的分配请求不会直接在内存池上分配内存来满足请求,而是直接向系统申请一块内存(就像直接使用 malloc 分配内存一样),然后将这块内存挂到内存池头部的 large 字段下. 小块内存分配,则是从已有的内存池数据区中分配出一部分内存. Nginx