k8s部署Pyroscope并分析golang性能瓶颈

news2025/4/13 14:43:53

Pyroscope是什么

Pyroscope是一种开源的应用程序性能分析工具,它可以帮助我们发现和解决应用中的性能问题。Pyroscope支持多种编程语言并提供了丰富的性能数据,可以帮助我们跟踪应用程序的执行情况,并根据收集到的数据来识别性能瓶颈。

Pyroscope采用SaaS模式进行存储、可视化和交互操作。通过这种方式,我们可以快捷地调整监控方案以及优化性能。同时Pyroscope还支持直接在终端使用,可以方便地进行本地测试和排查问题。


语言支持:

  1. Golang:Golang 是 Pyroscope 最初支持的语言,Pyroscope 支持在 Golang 应用程序或二进制文件中集成 Pyroscope 并获取性能数据。

  2. Python: Pyroscope 可以与 Python 应用程序集成,并捕获应用程序的性能瓶颈和问题。

  3. Node.js:Pyroscope 支持 Node.js 应用程序,在 Node.js 应用程序或 Node.js 二进制文件中集成 Pyroscope 以获取性能数据。

  4. Ruby:Pyroscope 可以集成到 Ruby 应用程序中,从而捕获 Ruby 应用程序的性能问题。

  5. Java: Pyroscope 也支持 Java 应用程序,可以直接将 Pyroscope 集成到 Java应用程序的代码中以监测和分析其性能和瓶颈。

  6. PHP: Pyroscope 支持基于 PHP 编写的应用程序,使开发者可以通过 Pyroscope 分析 PHP 应用程序的性能数据。

  7. .NET: Pyroscope 支持基于 .NET 的应用程序,同时提供了 C# 和 F# 的客户端库供用户使用。


Pyroscope的主要特点包括:

  1. 低消耗:Pyroscope Agent不会对生产服务造成不利影响,仅会有很小的性能开销。

  2. 可扩展性:可以设置内容密度和频率等高级X-Factor选项,以使其适用于高负载的环境中。

  3. 高效性:记录每一次运行,所有性能数据都被同时调整为正常趋势线,数据聚合度高,并且不需要任何人工干预。

总之,Pyroscope是一个易于安装和使用的性能追踪工具,可以为我们提供关键的指标和见解,从而帮助我们更好地追踪和优化应用程序的性能。


k8s安装:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: pyroscope
  namespace: kube-logging
spec:
  replicas: 1
  selector:
    matchLabels:
      app: pyroscope
  template:
    metadata:
      labels:
        app: pyroscope
    spec:
      containers:
      - name: pyroscope
        image: pyroscope/pyroscope:latest
        ports:
        - containerPort: 4040
        env:
        - name: PYROSCOPE_LOG_LEVEL
          value: "info"
        command: ["sh","-c","/usr/bin/pyroscope server"]
        resources:
          limits:
            cpu: "1"
            memory: "1Gi"
          requests:
            cpu: "500m"
            memory: "500Mi"

---
apiVersion: v1
kind: Service
metadata:
  name: pyroscope-service
  namespace: kube-logging
spec:
  selector:
    app: pyroscope
  ports:
    - protocol: TCP
      port: 4040
      nodePort: 32644
  type: NodePort

启动

#kubectl apply -f ./
#kubectl get pod,svc -n kube-logging
NAME                             READY   STATUS    RESTARTS   AGE
pod/pyroscope-79b5648755-nlvrb   1/1     Running   0          67m

NAME                        TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
service/pyroscope-service   NodePort   10.107.220.231   <none>        4040:32644/TCP   73m

访问

http://k8s_ip:32644
在这里插入图片描述

golang接入agent

package main

import (
    "github.com/gin-gonic/gin"
    "github.com/pyroscope-io/pyroscope/pkg/agent/profiler"
)

func main() {
    profiler.Start(profiler.Config{     //Pyroscope启动
        ApplicationName: "luouoosdfjosjdof.purchases",  //名字
        ServerAddress:   "http://192.168.14.27:32644",  //Pyroscope地址
    })
    r := gin.Default()
    r.GET("/test", func(c *gin.Context) {
        c.JSON(200, gin.H{
            "message": "OK",
        })
    })
    r.Run() // default listen serve on 0.0.0.0:8080
}

发起请求

for i in {1..100};do hey -n 100 -m get  http://localhost:8080/test;sleep 0.1;done

分析查看

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/459733.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是VBST和PVST?两者有啥区别?

在计算机网络中&#xff0c;VLAN&#xff08;Virtual Local Area Network&#xff0c;虚拟局域网&#xff09;是一种将局域网划分为多个逻辑上独立的子网的技术&#xff0c;它可以帮助网络管理员更好地管理网络资源。 在VLAN技术中&#xff0c;STP&#xff08;Spanning Tree P…

Git 如何修改历史的 Commit message

目录 修改最近一条Commit 修改过去若干条 Commit 场景&#xff1a;当分批次多次提交时&#xff0c;突然发现提交的message不符合规范&#xff0c;想要修改&#xff0c;这时就可以使用了 修改最近一条Commit 如果只是想修最近一条 Commit, 直接使用命令: git commit --amen…

基于DistFlow方程求解给定的通用径向单相配电网络的配电功率流方程(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 本文介绍了基于DistFlow方程求解给定的通用径向单相配电网络的配电功率流方程及结果展示。 &#x1f4da;2 运行结果 主函数部…

JVM垃圾回收机制和常见算法

GC回收垃圾流程第一步是定位内存空间中没有引用到的对象&#xff0c;然后才能进行回收。那么GC是如何定位这些内存中没有用到的对象呢&#xff1f; 一、引用计数器算法&#xff08;废弃&#xff09; 引用计数器算法是给每一个对象设置一个计数器&#xff0c;当有地方引用这个对…

Linux入门操作

pwd 查看当前目录 与 自动补全 文件详情 drwxrwxr-x d代表文件夹 -代表文件 其中rwx rwx r-x r是可读 w是可写 x 执行 第一组&#xff08;前三个&#xff09;指文件拥有者的权限 第二组&#xff08;中三个&#xff09;代表文件拥有的组的权限 第三组&#xff08;后三个&am…

5.2.1二叉树的定义和基本术语

二叉树的基本概念&#xff1a; 二叉树是递归定义的二叉树 下面我们来看几个特殊的二叉树&#xff1a; 特点&#xff1a; 1&#xff09;只有最后一层有叶子节点 2&#xff09;不存在度为1的结点 3&#xff09;按层序从1开始编号&#xff0c;结点i的左孩子为2i&#xff0c;右孩…

three.js地图可视化项目-广州模型

概述 如有不明白的可以加QQ&#xff1a;2354528292&#xff1b;wx: aichitudousien 更多教学视频请访问&#xff1a;https://space.bilibili.com/236087412 详细教学请到上方视频链接访问&#xff0c;总共3个多小时的教学~ three.js地图可视化项目-广州模型 搭建开发环境 使用…

Tomcat的概念、部署、及优化

一、Tomcat概述 1、Tomcat的概念 Tomcat是Java语言开发的&#xff0c;服务器是一个免费的开放源代码的Web应用服务器&#xff0c;属于轻量级应用服务器&#xff0c;在中小型系统和并发访问用户不是很多的场合下被普遍使用&#xff0c;是开发和调试JSP程序的首选。一般来说&am…

金陵科技学院五年一贯制专转本旅游学概论考试大纲

金陵科技学院五年一贯制专转本旅游学概论考试大纲 一、考核对象 本课程的考核对象为五年一贯制高职专转本“旅游管理”专业入学考试考生。 二、考核方式 本课程考核采用闭卷笔试的方式。 三、命题依据及原则 1、命题依据 参考书目&#xff1a;《旅游学概论》(第七版) 李…

【Git 入门教程】第一节、什么是Git?

在软件开发中&#xff0c;代码的管理和版本控制非常重要。为了更好地管理代码&#xff0c;需要使用一种有效的工具来保证代码的质量和稳定性。而Git正是这样一种工具。 一、概念 Git是一种分布式版本控制系统&#xff0c;它可以追踪文件的变化&#xff0c;并且可以协同工作。它…

SpringBoot——MyBatis-Plus源码分析及开发实践详解

focus w x&#xff1a;CodingTechWork 文章目录 focus w x&#xff1a;CodingTechWork 引言MyBatis-Plus 介绍概述特点常用注解TableNameTableIdIdType类型 TableField MyBatis-Plus 源码分析IService原生CURD接口savesaveorUpdateremoveupdategetlistpage Mapper原生CURD接口i…

抚仙湖,一个亦梦亦幻的地方,这个五一节,我们骑友′的诗和远方

云南省玉溪市抚仙湖是中国南方最大的深水型淡水湖泊之一&#xff0c;位于云南省中部&#xff0c;距离昆明市约80公里。抚仙湖的面积约为212平方公里&#xff0c;平均水深约为120米&#xff0c;最大水深可达157米。 抚仙湖最美的景点有很多&#xff0c;其中最著名的是以下几个&a…

2023年五月份图形化二级打卡试题

活动时间 从2023年5月1日至5月21日&#xff0c;每天一道编程题。 本次打卡的规则如下&#xff1a; 小朋友每天利用10~15分钟做一道编程题&#xff0c;遇到问题就来群内讨论&#xff0c;我来给大家答疑。 小朋友做完题目后&#xff0c;截图到朋友圈打卡并把打卡的截图发到活动群…

深度学习技巧应用9-模型训练中学习率的调整和假数据生成技巧与总结

大家好,我是微学AI,今天给大家介绍一下深度学习技巧应用9-模型训练中学习率的调整和假数据生成技巧与总结,我们在训练模型的时候,为了测试模型是否可以行,但是目前还没有标注好大量的数据,在缺乏数据的情况下,今天教大家如何生成假数据(测试数据)进行模型调试,并且教…

时间序列预测(一)基于Prophet的销售额预测

时间序列预测&#xff08;一&#xff09;基于Prophet的销售额预测 小O&#xff1a;小H&#xff0c;有没有什么方法能快速的预测下未来的销售额啊 小H&#xff1a;Facebook曾经开源了一款时间序列预测算法fbprophet&#xff0c;简单又快速&#xff5e; 传统的时间序列算法很多&a…

mac电脑怎么录屏?2招轻松搞定!

案例&#xff1a;怎样对mac电脑进行屏幕录制&#xff1f; 【之前一直使用的是Windows电脑&#xff0c;对Windows电脑比较熟悉。最近换了一台苹果电脑&#xff0c;不知道使用它怎么进行电脑录屏。求一个好用的苹果电脑录屏方法&#xff01;】 在我们的日常工作和生活中&#x…

c++ 对类与对象的基础框架+完整思维导图+基本练习题+深入细节+通俗易懂建议收藏

绪论 上一章&#xff0c;我们将c入门的基础知识进行了学习&#xff0c;本章其实才算真正的跨入到c开始可能比较难&#xff0c;但只有我们唯有不断的前进&#xff0c;才能斩断荆棘越过人生的坎坷&#xff01; 话不多说安全带系好&#xff0c;发车啦&#xff08;建议电脑观看&…

【原创】用Matplotlib绘制的图表,真的是太惊艳了!!

当我们谈论Python中的数据可视化&#xff0c;Matplotlib是一个不可或缺的库。它强大的功能和灵活性使我们能够以各种方式轻松地呈现数据。然而&#xff0c;有时候&#xff0c;我们可能会忽视Matplotlib在创建视觉上令人惊叹的图像方面的潜力。在本文中&#xff0c;我们将探讨如…

C语言数据结构+KMP算法next数组优化计算方法+优化后子串匹配代码实现

KMP算法next数组优化版 一.计算根据下列模式串计算出next数组二.优化next数组三.用优化后next的数组代码实现子串的匹配总结 通过我之前那篇KMP算法的讲解,我们可以快速手算KMP算法的next数组,但是之前计算的next数组在一些情况下会有缺陷,比如模式串’aaaab’和主串’aaabaaaa…

人人都能用,3s学会加密你的网址变成ooo

文章目录 1 前言2 原理及使用方法3 这玩意有什么用3.1 简单加密网址3.2 隐藏二级目录3.3 彩蛋&#xff1a;无限月读3.4 探讨性的加密应用 4 转换的代码4.1 将字符转为utf8数组4.2 将utf8数组转换为字符串4.3 最终转换4.4 用R来实现 5 讨论 1 前言 大家可以复制一下这个网址到浏…