Gin框架接入Prometheus,grafana辅助pprof检测内存泄露
prometheus与grafana的安装
grom接入Prometheus,grafana-CSDN博客
Prometheus 动态加载
我们想给Prometheus新增监听任务新增ginapp项目只需要在原来的配置文件下面新增ginapp相关metric
在docker compose文件下面新增
执行
docker-compose up -d
curl -X POST http://localhost:9090/-/reload
granfa配置新的job
配置golang dashboard模版
配置之后我们看以在dashboard看到
Gin框架中间件配置
package initializationimport ("awesomeProject3/middware""awesomeProject3/router""github.com/Depado/ginprom""github.com/gin-gonic/gin"_ "net/http/pprof"
)func Routers() *gin.Engine {r := gin.New()r.Use(middware.GinRecovery(true), middware.GinZapLogger())r.Use(middware.Cors())router.InitOrderRouter(r)p := ginprom.New(ginprom.Engine(r),ginprom.Subsystem("gin"),)r.Use(p.Instrument())return r
}
pprof配置
package routerimport ("awesomeProject3/api""github.com/gin-gonic/gin""net/http""net/http/pprof"
)func InitOrderRouter(Router *gin.Engine) {Router.GET("/health", func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"code": http.StatusOK,"success": true,})})// 定义一个简单的GET路由Router.GET("/v1/ping", func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"message": "pong",})})Router.GET("/test", api.TestHandler) //pprofGroup := Router.Group("/debug/pprof"){pprofGroup.GET("/", gin.WrapF(pprof.Index))pprofGroup.GET("/cmdline", gin.WrapF(pprof.Cmdline))pprofGroup.GET("/profile", gin.WrapF(pprof.Profile))pprofGroup.GET("/symbol", gin.WrapF(pprof.Symbol))pprofGroup.GET("/trace", gin.WrapF(pprof.Trace))pprofGroup.GET("/allocs", gin.WrapH(pprof.Handler("allocs")))pprofGroup.GET("/block", gin.WrapH(pprof.Handler("block")))pprofGroup.GET("/goroutine", gin.WrapH(pprof.Handler("goroutine")))pprofGroup.GET("/heap", gin.WrapH(pprof.Handler("heap")))pprofGroup.GET("/mutex", gin.WrapH(pprof.Handler("mutex")))pprofGroup.GET("/threadcreate", gin.WrapH(pprof.Handler("threadcreate")))}
}
模拟内存泄露
之前我们生产项目中出现过一次严重的内存泄露,例子如下图所示,该接口qps非常高
对当前接口压测
pprof监控
Grafana监控
我们看到goroutine数量已经爆表了,我的mac风扇开始转了
这个时候可以点击pprof groutine很好定位哪一块出现了内存泄露
结论
我们在使用golang 高并行处理下游任务的时候,一定要对下游基础设施要有敬畏之心,调用时限制goroutine的运行数量并且设置上context超时控制,做好超时熔断措施,做好监控警告,下游基础设施如果达到瓶颈,我们可对下游基础进行主从 水平扩容等。
相关文章:
Gin框架接入Prometheus,grafana辅助pprof检测内存泄露
prometheus与grafana的安装 grom接入Prometheus,grafana-CSDN博客 Prometheus 动态加载 我们想给Prometheus新增监听任务新增ginapp项目只需要在原来的配置文件下面新增ginapp相关metric 在docker compose文件下面新增 执行 docker-compose up -d curl -X POST http://lo…...
上海凯泉泵业入职测评北森题库题型分析、备考题库、高分攻略
上海凯泉泵业(集团)有限公司是一家大型综合性泵业公司,专注于设计、生产、销售泵、给水设备及其控制设备。作为中国泵行业的领军企业,凯泉集团拥有7家企业和5个工业园区,总资产达到25亿元,生产性建筑面积35…...
Linux:基础IO
目录 1. stdin & stdout & stderr 2. 系统文件I/O 1. 接口介绍 open write read close lseek 2. open函数返回值 3. 文件描述符fd 0 & 1 & 2 文件描述符的分配规则 重回定向 dup2 简易Shell的模拟实现 4. FILE 5. 再谈对文件的理解 1. stdin …...
奥运奖牌窥视
1 前言 2024巴黎奥运会已经闭幕了,中国队创纪录地获得了海外举办的奥运会的最佳成绩,我们来个管中窥豹,看看中国队从哪些项目中取得了奖牌。 2 奖牌组成 游泳真是大项,小项数量众多,比如个人自由泳就有100m、200m、4…...
RUST实现远程操作电脑手机
简介: Rust Desk 是一个开源的远程桌面软件,能够完全替代向日葵和ToDesk的功能,包括电脑控制电脑、电脑控制手机、手机控制电脑等。它是完全免费的。 下载: 需要下载 Rust Desk 的服务端和客户端安装包。 安装: 服务…...
spring01-spring容器启动过程分析
【README】 本文总结自《spring揭秘》,作者王福强,非常棒的一本书,墙裂推荐; spring容器根据配置元素组装可用系统分2个阶段,包括spring容器启动, springbean实例化阶段; 本文详细分析spring容…...
RAG与LLM原理及实践(12)--- Milvus RRFRanker的使用场景及源码分析
目录 背景 rrfRanker 简介与实例 核心逻辑 实例 蕴含思想 rrfRanker VS weightedRanker rrfRanker weightedRanker 场景使用区别 RRFRanker 使用场景 weightedRanker 使用场景 代码 代码实现 运行结果 修改代码 再次运行结果 源码 源码实现 解释 Ranker 可…...
Nginx与Tomcat的区别
Nginx与Tomcat的区别 —— 经验笔记 引言 在现代Web开发中,选择合适的服务器软件对于构建高性能、可靠的应用程序至关重要。Nginx 和 Tomcat 是两种常见的服务器软件,尽管它们都可以被归类为Web服务器,但它们的设计目标和应用场景有着本质的…...
LeetCode 3151.特殊数组 I
【LetMeFly】3151.特殊数组 I 力扣题目链接:https://leetcode.cn/problems/special-array-i/ 如果数组的每一对相邻元素都是两个奇偶性不同的数字,则该数组被认为是一个 特殊数组 。 Aging 有一个整数数组 nums。如果 nums 是一个 特殊数组 ÿ…...
【产品那些事】The OX Active ASPM Platform
文章目录 前言关于OX Security产品理念 流程体验Complete Visibility:将安全无缝嵌入到SDLC中PBOMOSC&R coverageContextualized Prioritization:快速解决最关键的风险Accelerated Response:简化安全流程See Beyond the Code:…...
欢迪迈手机商城设计与开发
TOC springboot137欢迪迈手机商城设计与开发 绪论** 1.1 研究背景 当前社会各行业领域竞争压力非常大,随着当前时代的信息化,科学化发展,让社会各行业领域都争相使用新的信息技术,对行业内的各种相关数据进行科学化࿰…...
Endnote与word关联 解决方案: COM加载项-----》CWYW插件安装
1、首先说一下本次情况,office的版本是2019,后安装的Endnote 9。旧版word也可按此方法尝试。 2、先找到关键的EndNote Cwyw.dll文件。应在此目录下:C:\Program Files (x86)\EndNote X7\Product-Support\CWYW。 3、如没有EndNote Cwyw.dll文…...
用R语言运用 Shiny 包打造基于鸢尾花数据集的交互式数据可视化应用
下面内容摘录自《R 语言与数据科学的终极指南》专栏文章的部分内容,每篇文章都在 5000 字以上,质量平均分高达 94 分,看全文请点击下面链接: 1章4节:数据可视化, R 语言的静态绘图和 Shiny 的交互可视化演…...
Upload-Lab第3关:如何巧妙应对黑名单文件后缀检测?
关卡介绍 在Pass03中,我们面临的挑战是绕过文件上传功能的黑名单检测机制。黑名单检测是一种常见的安全措施,它通过检查上传文件的后缀来阻止特定类型的文件(如 .php, .exe)被上传。在这一关,我们需要找到一种方法,上传一个可以执行的恶意文件,同时绕过黑名单检测。 …...
SSLVPN对比IPSECVPN安全设备的起源、发展、以及目前行业使用场景
前言 SSL VPN(Secure Sockets Layer Virtual Private Network)是一种利用SSL/TLS(Transport Layer Security,传输层安全)协议来创建安全连接的技术,它允许远程用户通过公共网络(通常是互联网&am…...
Hadoop大数据集群搭建
一、虚拟机配置网络 1、配置文件 进入“/etc/sysconfig/network-scripts”目录,查看当前目录下的“ifcfg-ens33”文件 对“ens33”文件进行配置 2、重启网络 systemctl restart network 3、测试网络 Ping www.baidu.com 4、设置虚拟机主机名称 5、绑定主机名和…...
【技术前沿】MetaGPT入门安装部署——用多个大语言模型解决任务!一键安装,只需填写OpenAI API
项目简介 MetaGPT 是一个多智能体框架,旨在构建全球首家 “AI 软件公司”。该项目通过为 GPT 分配不同的角色,模拟产品经理、架构师、工程师等职业,协同完成复杂的软件开发任务。MetaGPT 将一个简单的需求转化为完整的软件开发流程ÿ…...
#compsoer基本使用01#
Composer 是 PHP 的依赖管理工具,它允许开发人员管理和安装项目所需的依赖包。 1:查看Compsoer的全局配置命令 composer config -g --list --verbose 这个可以查看composer的镜像地址。例如 [repositories.packagist.org] type (string) : composer [repositor…...
基于c++的yolov5推理之前处理详解及代码(一)
目录 一、前言: 二、关于环境安装: 三、首先记录下自己的几个问题 问题:c部署和python部署的区别? 四、正文开始 4.1 图像预处理讲解 1、BGR---->RBG 2、等比例放缩图片(涉及到短边的填充) 3、归一化…...
Oracle(55)什么是并行查询(Parallel Query)?
并行查询(Parallel Query)是数据库管理系统中的一种查询优化技术,它允许数据库引擎同时使用多个处理器或线程来执行查询操作。通过将查询任务分解为多个子任务,并在多个处理器上同时执行这些子任务,可以显著提高查询的…...
关于 Lora中 Chirp Spread Spectrum(CSS)调制解调、发射接收以及同步估计的分析
本文结合相关论文对CSS信号的数学形式、调制解调、发射接收以及同步估计做了全面分析,希望有助于更好地理解lora信号 long-range (LoRa) modulation, also known as chirp spread spectrum (CSS) modulation, in LoRaWAN to ensure robust transmission over long d…...
Java - API
API全称"Application Programming Interface",指应用程序编程接口 API(JDK17.0)链接如下 : Overview (Java SE 17 & JDK 17) (oracle.com)https://docs.oracle.com/en/java/javase/17/docs/api/中文版: Java17中…...
力扣 3152. 特殊数字Ⅱ
题目描述 queries二维数组是nums数组待判断的索引区间(左闭右闭)。需要判断每个索引区间中的nums相邻元素奇偶性是否不同,如果都不同则该索引区间的搜索结果为True,否则为False。 暴力推演:也是我最开始的思路 遍历q…...
识别和缓解软件安全威胁的最佳工具
软件安全威胁会给企业带来重大损失,从经济损失到声誉受损。 企业必须主动识别和缓解这些威胁,防止它们造成危害。 幸运的是,有许多工具可以帮助企业识别和缓解软件安全威胁。 在本博客中,我们将探讨识别和缓解软件安全威胁的顶…...
Linux下的压缩与解压:掌握核心命令行工具
目录 一.前言 二.压缩文件概述 三.tar:Linux 的通用归档工具 常用 tar 命令 四.gzip:强大的压缩程序 常用 gzip 命令 五.zip 和 unzip:处理 ZIP 压缩文件 常用 zip 和 unzip 命令 实用技巧和最佳实践 六.结语 一.前言 在 Linux …...
BGP选路实验
要求: 1.如图连接网络,合理规格IP地址,AS200内IGP协议为OSPF; 2.R1属于AS 100;R2-R3-R4小AS234、R5-R6-R7小AS567,同时声明大AS 200,R8属于AS300; 3.R2-R5、R4-R7之间为联邦EBGP邻居…...
白骑士的C#教学高级篇 3.3 网络编程
网络编程是现代应用程序开发中至关重要的一部分。C# 提供了一套丰富的 API 来处理基本网络通信、Web请求与响应。在本节中,我们将深入探讨这些内容,帮助您掌握如何在 C# 中进行网络编程。 基本网络通信 基本网络通信通常涉及套接字(Socket&a…...
AI大模型赋能游戏:更智能、更个性化的NPC
参考论文:https://arxiv.org/abs/2403.10249 在传统游戏中,NPC(非玩家角色)的行为往往是预先设定好的,缺乏灵活性和变化性。然而,基于大模型的NPC可以利用其强大的推理和学习能力,实时生成对话…...
pymysql的上下文管理器:简化数据库操作
pymysql的上下文管理器:简化数据库操作 当我们使用 pymysql 操作数据库时,管理数据库连接和游标的生命周期是一项重要的任务。Python 的上下文管理器提供了一种优雅的方式来处理资源的获取和释放。在本文中,我们将探索如何创建一个简单的 py…...
AI秘境-墨小黑奇遇记 - 修炼成神经(二)
在解开了感知机和门电路的谜题后,墨小黑对人工智能的世界渐渐产生了浓厚的兴趣。他开始意识到,自己不仅是在学习一门复杂的技术,更是在探索一个充满未知与挑战的神秘领域。 入夜,墨小黑一脸无奈地盯着电脑屏幕,思考着自…...
网站建设的工作总结/百度信息流广告
现有模型 在pytorch官网有很多模型 现有网络模型的使用 以vgg16为例 代码示例: import torchvision.datasets#因为数据集现在不能用这种方式下载了,只能手动下载 #train_data torchvision.datasets.ImageNet("../data_image", splittrain,…...
wordpress 上下篇/爱站seo综合查询
1、为什么要定义函数? 定义函数(指定它的功能和名字)的目的就是为了使用函数。已达到精简代码的目的。 2、怎样定义函数? 类型标识符 函数名(参数){ 声明部分; 语句部分 } 3、定义函数时函数后面括号中的变…...
做公司网站的费用/广州发布紧急通知
我正在为网站进行数据导入功能 . 我在宅基地上使用Laravel 5.1,并给了机器4GB的RAM和两个虚拟的cpu . 为了导入数据,我使用了Laravel Excel软件包,其chuncking机制基本上打破了块中的数据集,并将处理添加到队列中 . 其工作流程如下…...
网站收藏本站的功能/东莞seo报价
二叉搜索树:把要查找的集合放在树上,实现类似二分查找的效率 尾递归:函数返回时出现递归 因此最好不用递归,改用循环 如果二叉树都只有左儿子,则查找效率也不高,最好让二叉树左右平衡,成为“平…...
手机网站建设价格低/找百度
问题描述 我的Emacs使用了Purcell的配置,在其配置中使用了whitespace-cleanup,且通过在.emacs.d/lisp/init-edit-utils.el中设定: (require whitespace-cleanup-mode) (global-whitespace-cleanup-mode t)这样设定后,默认会全局使…...
wordpress手机不方便/seo站长工具平台
调整分区后盘符不见是比较常见的数据恢复案例,需要注意,调整分区后盘符不见后不要再重建新的分区。保护好资料丢失现场,可以最大程度的恢复出资料。具体的恢复方法看正文了解。 工具/软件:星空数据恢复软件 步骤1:先百…...