点赞
评论
收藏
分享
举报
【转载】 NGINX 性能分析之 gpreftools
发表于2021-09-26 11:00

浏览 1.1k

作者:运维研习社

原文链接:https://xie.infoq.cn/article/977414e8a6a01dac35e0dfb29

 

gperftools 是 google_perftools,google 开发的一款非常使用的工具集,主要包括性能优异的 malloc free 内存分配器 tcmalloc、基于 tcmalloc 的堆内存检测和内存泄露分析工具 heap-profiler、heap-checker、基于 tcmalloc 实现的程序 CPU 性能检测工具 cpu-profiler。


在 nginx 中,可以通过--with-google_perftools_module 编译参数启用这个性能分析模块



如图,添加编译参数,重新编译 nginx


该模块依赖于 gpreftools 库,所以在编译之前,需要先编译安装 gperftools,在 64 位系统下,需要先安装 libunwind


libunwind 安装:

https://github.com/libunwind/libunwind/releaseshttp://download.savannah.gnu.org/releases/libunwind/下载最新版本安装包

解压,编译安装



当然,你也可以--prefix 指定位置编译安装


安装完成后,安装 gperftools



安装完成后,重新编译安装 nginx



编译安装完后,如果遇到找不到 lib 共享库,可以和上图一样,做软链处理,libunwind 和 gperftools 编译完成后,共享库都是存储在/usr/local/lib 的,而 64 位的系统中通常是找/lib64 下面的,或者可以通过添加 ldconfig 来解决


解决上诉问题后,可以看到 nginx 已经开启了 google_perftools 模块


在 nginx 中配置 gperftools 很简单,就一个指令



配置在主配置文件中,指定分析信息存储的文件位置及名称即可



这样就会生成一个分析结果文件,后面的数字是 nginx 工作进程的 PID 号


接着用 ab 压测一下 nginx,接着再重载一下 nginx,让分析结果落盘写入分析信息文件



生成的文件不方便查看,所以我们通过 svg 来查看,首先安装图像分析生成工具 graphviz,直接通过 yum 安装就可以


安装完成后,通过 pprof 来生成 svg



生成 nginx.svg,我们查看结果,为了方便完整,我转换成了 png



这样我们就能很清晰的看到 nginx 的调用和性能消耗,从而找到性能瓶颈点,进行相应优化

已修改于2023-03-07 10:39
创作不易,留下一份鼓励
NGINX社区小N助手

暂无个人介绍

关注



写下您的评论
发表评论
全部评论(0)

按点赞数排序

按时间排序

关于作者
NGINX社区小N助手
这家伙很懒还未留下介绍~
14
文章
0
问答
12
粉丝
相关文章
在我们的系列的前两篇有关在传输和存储过程中保护SSL密钥和证书的文章中,我们讨论了使用诸如HashiCorpVault和硬件安全模块(HSM)之类的工具为磁盘上的NGINX保护SSL密钥和证书数据:使用NGINX安全分发SSL私钥使用HashiCorpVault保护NGINX中的SSL私钥在许多情况下,将SSL证书数据存储在磁盘上是可以容忍的风险,只要使用其他安全防护栏来管理对这些证书的访问即可。但是在某些用例中,还需要将所有与安全相关的组件保留在磁盘之外,而仅存储在内存中并可以从内存中访问。两种最常见的用例是:安全性得到增强的环境,其中任何静态存储都将受到威胁,以及系统是临时的(例如容器)或SSL证书和密钥本身都是临时的环境。在本文中,我们重点讨论后一种用例:短期SSL证书密钥对。我们正在使用HashiCorpVault颁发临时SSL证书,并将其存储在NGINXPlus键值存储(内存数据库)中。NGINXPlusR18和更高版本支持用于安全SSL密钥管理的强大体系结构,因为SSL证书密钥对可以加载到内存中,并可以通过变量(例如NGINXPlus密钥值存储中的值)进行访问
点赞 4
浏览 1.5k
一、SSL协议加密方式SSL协议即用到了对称加密也用到了非对称加密(公钥加密),在建立传输链路时,SSL首先对对称加密的密钥使用公钥进行非对称加密,链路建立好之后,SSL对传输内容使用对称加密。 1.对称加密 速度高,可加密内容较大,用来加密会话过程中的消息。 2.公钥加密 加密速度较慢,但能提供更好的身份认证技术,用来加密对称加密的密钥。单向认证 Https在建立Socket连接之前,需要进行握手,具体过程如下:  1、客户端向服务端发送SSL协议版本号、加密算法种类、随机数等信息。 2、服务端给客户端返回SSL协议版本号、加密算法种类、随机数等信息,同时也返回服务器端的证书,即公钥证书 3、客户端使用服务端返回的信息验证服务器的合法性,包括:证书是否过期发型服务器证书的CA是否可靠返回的公钥是否能正确解开返回证书中的数字签名服务器证书上的域名是否和服务器的实际域名相匹配验证通过后,将继续进行通信,否则,终止通信 4、客户端向服务端发送自己所能支持的对称加密方案,供服务器端进行选择&n
点赞 0
浏览 1.4k
本期课程介绍了 NGINX 集群是怎么工作的,并对比 NGINX 官方和 Kubernetes 官方的两个 Ingress Controller 在运行时各自的特点以及性能上的差别。课程内容包括 Kubernetes 的网络流量场景,以及 NGINX 集群该如何管理,如何解决分布式集群中常见的高可用、容灾、扩容等问题。
点赞 0
浏览 654