首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

gpreftools动态追踪Nginx进行性能分析

之前介绍了多种nginx调试工具,今天介绍nginx性能分析工具——gperftools gperftools是google_perftools,google开发的一款非常使用的工具集,主要包括性能优异的.../gperftools 回到主题,在nginx中,可以通过--with-google_perftools_module编译参数启用这个性能分析模块 ?...如图,添加编译参数,重新编译nginx 该模块依赖于gpreftools库,所以在编译之前,需要先编译安装gperftools,在64位系统下,需要先安装libunwind libunwind安装: 从...当然,你也可以--prefix指定位置编译安装 安装完成后,安装gperftools ? 安装完成后,重新编译安装nginx ?...下面的,或者可以通过添加ldconfig来解决 解决上诉问题后,可以看到nginx已经开启了google_perftools模块 在nginx中配置gperftools很简单,就一个指令 ?

1.4K30

疑案追踪:Spring Boot内存泄露排查记

首先,使用了gperftools去定位问题 gperftools的使用方法可以参考gperftoolsgperftools的监控如下: ?...(gperftools原理就使用动态链接的方式替换了操作系统默认的内存分配器(glibc)。)...这时,再返过来看gperftools的内存分布情况,发现使用Spring Boot时,内存使用一直在增加,突然某个点内存使用下降了好多(使用量直接由3G降为700M左右)。...查看tcmalloc(gperftools使用的内存分配器)也使用了内存池方式。 为了验证是内存池搞的鬼,笔者就简单写个不带内存池的内存分配器。...通过在自定义分配器当中埋点可以发现其实程序启动之后应用实际申请的堆外内存始终在700M-800M之间,gperftools监控显示内存使用量也是在700M-800M左右。

2.1K20

cmake:gperftools性能分析工具find libprofiler 脚本暨profiler的静态连接问题

gperftools是一个很好用的性能分析工具,但没有提供官方的用于查找profiler库的cmake脚本,所以在基于cmake管理的项目中如果要在系统查找libprofiler库就就要自己写FindPROFILER.cmake...将脚本所在的文件夹加入CMAKE_MODULE_PATH,调用find_package(PROFILER),就会找到系统中安装的gperftools的libprofiler库, 脚本不仅按传统方式输出...LIBPROFILER_xxx系列变量,还会创建gperftools::profiler INTERFACE target.方便在项目中引用。...但我查看了gperftools(2.7)的官方说明,提供了静态连接profiler库的方法: 下面的英文说明来自gperftools的官方说明(https://github.com/gperftools.../gperftools/blob/master/README) EVERYTHING IN ONE ----------------- If you want the CPU profiler, heap

1.6K20

spring boot 引起的 “堆外内存泄漏”

首先使用了gperftools去查看,截图如下: ? 上图可以看出,使用malloc申请的的内存最高到3G之后就释放了,之后始终维持在700M-800M。...(gperftools原理就使用动态链接的方式替换了操作系统默认的内存分配器(glibc)) 直接使用strace对mmap/brk进行追踪发现,并没有申请内存,此时陷入了比较迷茫的状态。...发现和不使用gperftools内存地址分布差别很明显,2.5G地址使用smaps发现他是属于native stack。物理内存地址分布如下: ?...按照文中所说去修改MALLOC_ARENA_MAX环境变量,发现没什么效果,去查看tcmalloc(gperftools使用的内存分配器)也使用了内存池方式。...补充一下:定位问题用的工具有:top、jstack、arthas、pmap,gperftools,btrace、strace、gdb等。 -END- 纯洁的微笑

1.6K10

Spring Boot引起的“堆外内存泄漏”排查及经验总结

首先,使用了gperftools去定位问题 gperftools的使用方法可以参考gperftoolsgperftools的监控如下: gperftools监控 从上图可以看出:使用malloc申请的的内存最高到...(gperftools原理就使用动态链接的方式替换了操作系统默认的内存分配器(glibc)。)...然后使用strings mem.bin查看dump的内容,如下: gperftools监控 从内容上来看,像是解压后的JAR包信息。...这时,再返过来看gperftools的内存分布情况,发现使用Spring Boot时,内存使用一直在增加,突然某个点内存使用下降了好多(使用量直接由3G降为700M左右)。...查看tcmalloc(gperftools使用的内存分配器)也使用了内存池方式。 为了验证是内存池搞的鬼,笔者就简单写个不带内存池的内存分配器。

1.1K10

Spring Boot引起的“堆外内存泄漏”排查及经验总结

首先,使用了gperftools去定位问题 gperftools的使用方法可以参考gperftoolsgperftools的监控如下: [gperftools监控] 从上图可以看出:使用malloc申请的的内存最高到...(gperftools原理就使用动态链接的方式替换了操作系统默认的内存分配器(glibc)。)...然后使用strings mem.bin查看dump的内容,如下: [gperftools监控] 从内容上来看,像是解压后的JAR包信息。...这时,再返过来看gperftools的内存分布情况,发现使用Spring Boot时,内存使用一直在增加,突然某个点内存使用下降了好多(使用量直接由3G降为700M左右)。...查看tcmalloc(gperftools使用的内存分配器)也使用了内存池方式。 为了验证是内存池搞的鬼,笔者就简单写个不带内存池的内存分配器。

1.6K40
领券