一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

解密服務(wù)性能利器:Pyroscope讓你的應(yīng)用飛起來(lái)

馬哥Linux運(yùn)維 ? 來(lái)源:馬哥Linux運(yùn)維 ? 作者:馬哥Linux運(yùn)維 ? 2023-05-28 09:14 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

開(kāi)發(fā)人員通常需要查看生產(chǎn)應(yīng)用程序中的性能瓶頸以確定問(wèn)題的原因。為此,您通常需要可以通過(guò)日志和代碼工具收集的信息。不幸的是,這種方法通常耗時(shí),并且不能提供有關(guān)潛在問(wèn)題的足夠詳細(xì)信息。

一種現(xiàn)代且更先進(jìn)的方法是應(yīng)用和使用分析技術(shù)和工具來(lái)突出顯示最慢的應(yīng)用程序代碼,即消耗大部分資源的區(qū)域。

在這篇博文中,我們將討論持續(xù)分析,然后使用名為 Pyroscope 的開(kāi)源工具檢測(cè)在 Kubernetes 上運(yùn)行的微服務(wù)。

什么是Pyroscope?

必須對(duì)代碼進(jìn)行分析、調(diào)試和審查,以確定使其運(yùn)行得更快的最有效方法。使用分析工具檢查應(yīng)用程序的代碼有助于我們定位和修復(fù)性能瓶頸。這可以快速診斷應(yīng)用程序的執(zhí)行情況,并使程序員能夠深入了解性能不佳的核心細(xì)節(jié)。結(jié)果是一個(gè)簡(jiǎn)化的代碼庫(kù),減少了 CPU/內(nèi)存消耗,使用戶體驗(yàn)更好!

Profiling 是一種程序分析,用于測(cè)量程序的內(nèi)存、時(shí)間復(fù)雜度或函數(shù)調(diào)用的頻率和持續(xù)時(shí)間。分析信息用于幫助程序優(yōu)化和性能。Profiler 程序可以跟蹤每一行代碼。連續(xù)分析

Continuous Profiler 用于更快、更輕松地進(jìn)行故障排除。Continuous Profiler 是生產(chǎn)代碼分析器,可讓您隨時(shí)間分析整個(gè)環(huán)境中的代碼級(jí)性能。隨著配置文件的不斷收集,它們可以在引入新代碼后快速揭示資源最密集的特性(或代碼行)。優(yōu)化可以減少最終云提供商帳戶和用戶的延遲。

有哪些連續(xù)分析器?

因此,這里列出了您可能遇到的一些分析器:

  • Pyroscope

Pyroscope是一個(gè)開(kāi)源平臺(tái),由服務(wù)器和代理組成。它允許用戶以 CPU 和磁盤(pán)高效的方式收集、存儲(chǔ)和查詢(xún)分析數(shù)據(jù)。

  • Parca

Parca收集、存儲(chǔ)和提供配置文件,以便隨著時(shí)間的推移進(jìn)行查詢(xún)。它是開(kāi)源的,可以部署在生產(chǎn)環(huán)境中,因?yàn)?Parca 專(zhuān)注于對(duì)兩種主要類(lèi)型的配置文件進(jìn)行采樣分析:跟蹤和采樣。

Datadog Continuous Profiler始終在任何環(huán)境(包括生產(chǎn)環(huán)境)中分析和比較代碼性能。它指出了由低效代碼導(dǎo)致的難以復(fù)制的生產(chǎn)問(wèn)題。還具有自動(dòng)代碼分析洞察力。

  • Google - Cloud Profiler

Cloud Profiler是一種低開(kāi)銷(xiāo)的統(tǒng)計(jì)分析器,可從您的生產(chǎn)應(yīng)用程序中持續(xù)收集 CPU 使用率和內(nèi)存分配信息。它具有可操作的應(yīng)用程序分析、低影響的生產(chǎn) Profilin 和廣泛的平臺(tái)支持。

為什么使用 Pyroscope

在我們開(kāi)始探索 Pyroscope 之前,讓我們看看它與市場(chǎng)上其他少數(shù)可用的連續(xù)分析工具有何不同。DataDog 和 Google Cloud Profiler 在業(yè)界被廣泛使用。正如一位 Reddit 用戶所指出的,以下是 Pyroscope 比其他兩個(gè)更好的一些原因。

e24e12aa-fccb-11ed-90ce-dac502259ad0.jpg

Pyroscope 專(zhuān)注于構(gòu)建專(zhuān)門(mén)用于分析數(shù)據(jù)的存儲(chǔ)引擎,以盡可能高效地存儲(chǔ)和查詢(xún)數(shù)據(jù)。它使用代理服務(wù)器模型將配置文件從應(yīng)用程序發(fā)送到 Pyroscope 服務(wù)器:

e26ab658-fccb-11ed-90ce-dac502259ad0.png

Pyroscope 允許任何語(yǔ)言的分析器向其發(fā)送數(shù)據(jù),并讓存儲(chǔ)引擎有效地存儲(chǔ)該數(shù)據(jù)。例如,Pyroscope 具有針對(duì) Go、Python、Ruby、eBPF、Java、.NET、PHP 和 Rust 的語(yǔ)言特定代理。

另一方面,Parca 采用了稍微不同的方法,它依賴(lài) eBPF 來(lái)編譯 C、C++、Go 等語(yǔ)言。在撰寫(xiě)本文時(shí),對(duì)其他語(yǔ)言的支持正在進(jìn)行中。與 Pyroscope 類(lèi)似,它也可以從 HTTP 端點(diǎn)讀取任何pprof 格式的配置文件。從理論上講,由于所有這些語(yǔ)言最終都會(huì)編譯下來(lái)并在內(nèi)核上運(yùn)行,因此 eBPF 應(yīng)該適用于這些語(yǔ)言中的任何一種。然而,在實(shí)踐中,如果你真的為 Python 等解釋性語(yǔ)言運(yùn)行 eBPF,在許多情況下,函數(shù)名稱(chēng)對(duì)人類(lèi)來(lái)說(shuō)是不可讀的。這是因?yàn)榉?hào)不是以這些語(yǔ)言存儲(chǔ)的。

出于這個(gè)原因,Pyroscope 同時(shí)支持特定于語(yǔ)言的分析器和 eBPF 分析器。與僅在內(nèi)核級(jí)別運(yùn)行的 eBPF 相比,這以集成語(yǔ)言特定代理的工作量稍多為代價(jià)。但它也帶來(lái)了更多可操作和人類(lèi)可讀的配置文件的好處。

如何安裝 Pyroscope?

無(wú)論您使用什么,Docker、Linux,或者正在尋找 Ruby 或 Go 文檔,Pyroscope 都可以啟動(dòng)服務(wù)器,然后再啟動(dòng)代理。即使您的目標(biāo)是 10 秒或 10 個(gè)月的軟件分析數(shù)據(jù),他們定制設(shè)計(jì)的存儲(chǔ)引擎也可以進(jìn)行快速查詢(xún)?!?Pyroscope 網(wǎng)站

我們將使用 minikube 來(lái)運(yùn)行 Kubernetes 集群。使用 minikube 創(chuàng)建集群:


	

minikubestart

添加 Helm 圖表存儲(chǔ)庫(kù):


	

helmrepoaddpyroscope-iohttps://pyroscope-io.github.io/helm-chart

安裝 Helm 圖表:


	

helminstallpyroscopepyroscope-io/pyroscope--setservice.type=NodePort

檢查 Pyroscope Helm 圖表安裝成功:


	

helmlist

檢查 Pyroscope 是否正在運(yùn)行:


	

kubectlgetall

現(xiàn)在我們的 Kubernetes 集群中運(yùn)行了 Pyroscope,我們將繼續(xù)使用該應(yīng)用程序的步驟。我們將使用Google 微服務(wù)來(lái)進(jìn)行此演示。

將 Google 微服務(wù)演示與 Pyroscope 集成

我們將修改我們的容器鏡像以使用 pyroscope 二進(jìn)制文件。這個(gè)二進(jìn)制文件將啟動(dòng)我們的應(yīng)用程序并注入自己進(jìn)行監(jiān)控。您可以在此 Pyroscope 文檔中參考更多內(nèi)容。

我們將使用來(lái)自 Google 微服務(wù)的 Python、Go 和 .NET 微服務(wù)進(jìn)行演示。所有修改都推送到GitHub 上的 Google 微服務(wù)分支,讓我們來(lái)看看每個(gè)服務(wù)的這些更改。

注意:要在 Google 微服務(wù)演示中試用 Pyroscope,您無(wú)需自己構(gòu)建 Docker 鏡像。您可以只應(yīng)用 Kubernetes 清單,如從微服務(wù)獲取分析數(shù)據(jù)部分所示。

  • Python

我們將使用用 Python 編寫(xiě)的電子郵件服務(wù)應(yīng)用程序。在DockerfilePyroscope 中使用 Python 應(yīng)用程序需要進(jìn)行以下更改。


	

COPY--from=pyroscope/pyroscope:latest/usr/bin/pyroscope/usr/bin/pyroscope CMD["pyroscope","exec","python","email_server.py"]

編輯 Dockerfile 后,在同一文件夾下,我們繼續(xù)構(gòu)建和推送鏡像。


	

dockerbuild.-tbeellzrocks/emailservice:latest dockerpushbeellzrocks/emailservice:latest

  • .NET

我們將使用適用于 .NET 的應(yīng)用程序 Cart Service。要將 .NET 應(yīng)用程序與 Pyroscope 一起使用,需要對(duì) Dockerfile 進(jìn)行以下更改。


	

COPY--from=pyroscope/pyroscope:latest/usr/bin/pyroscope/usr/bin/pyroscope ENTRYPOINT["pyroscope","exec","-spy-name","dotnetspy","/app/cartservice"] 編輯 Dockerfile 后,我們繼續(xù)構(gòu)建和推送鏡像。

  • GO

我們將采用 Go 編寫(xiě)的 Product Catalog Service 應(yīng)用程序。要使用帶有 Pyroscope 的 Go 應(yīng)用程序,需要對(duì)server.go進(jìn)行以下更改。


	

import( pyroscope"github.com/pyroscope-io/pyroscope/pkg/agent/profiler" ) funcmain(){ pyroscope.Start(pyroscope.Config{ ApplicationName:os.Getenv("APPLICATION_NAME"), ServerAddress:os.Getenv("SERVER_ADDRESS"), }) //codehere )

編輯 server.go 后,我們繼續(xù)構(gòu)建和推送鏡像。

從微服務(wù)獲取分析數(shù)據(jù)

我們修改了 Kubernetes 清單以將我們的圖像與 Pyroscope 一起使用。

該kubernetes-manifests.yaml文件包含所有應(yīng)用程序的資源。我們對(duì)其進(jìn)行了編輯以使用我們?cè)谏鲜霾襟E中構(gòu)建的鏡像,即電子郵件服務(wù)、購(gòu)物車(chē)服務(wù)、產(chǎn)品目錄服務(wù)。


	

containers: -name:server image:beellzrocks/emailservice

在 Kubernetes 中運(yùn)行 Pyroscope 時(shí),我們需要做以下更改:

  • 添加SYS_PTRACE能力。

  • 告訴代理 Pyroscope 服務(wù)器的位置,以及使用環(huán)境變量的應(yīng)用程序名稱(chēng)。


	

containers: -name:server env: -name:PYROSCOPE_SERVER_ADDRESS#TochangePyroscopeServerPortchangethevalue value:"http://pyroscope:4040" -name:PYROSCOPE_APPLICATION_NAME#ApplicationnameshownintheUI value:"email.service" securityContext: capabilities: add: -SYS_PTRACE

現(xiàn)在,要部署所有服務(wù),您可以將 Kubernetes 清單應(yīng)用到您的集群。


	

kubectlapply-fhttps://raw.githubusercontent.com/infracloudio/microservices-demo-dev/master/release/kubernetes-manifests.yaml

獲取 Pyroscope 的服務(wù) url:


	

minikubeservicepyroscope


	

|-----------|-----------|-------------|---------------------------| |NAMESPACE|NAME|TARGETPORT|URL| |-----------|-----------|-------------|---------------------------| |default|pyroscope|http/4040|http://192.168.49.2:30639| |-----------|-----------|-------------|---------------------------| Openingservicedefault/pyroscopeindefaultbrowser

要訪問(wèn) Pyroscope UI,您可以訪問(wèn) URL:http://192.168.49.2:30639(依據(jù)上述反饋打開(kāi)實(shí)際地址)。

e29d5c8e-fccb-11ed-90ce-dac502259ad0.png

正如您在上面的屏幕截圖中看到的,Pyroscope 本身在本地存儲(chǔ)數(shù)據(jù)時(shí)占用的 CPU 使用率很低。它使用 Badger 數(shù)據(jù)庫(kù)在本地存儲(chǔ)數(shù)據(jù)。

Pyroscope 資源利用

監(jiān)控 Kubernetes pod 在資源使用、利用率和成本控制方面也很重要。Pyroscope 使用低資源和低開(kāi)銷(xiāo)。

e2d5e310-fccb-11ed-90ce-dac502259ad0.png

使用 Pyroscope 進(jìn)行監(jiān)控

Pyroscope 根據(jù)編程語(yǔ)言使用不同的代理來(lái)分析代碼。下面是一些使用 Pyroscope 的分析應(yīng)用程序的火焰圖示例。

e2fe5cd2-fccb-11ed-90ce-dac502259ad0.png

e33bacfe-fccb-11ed-90ce-dac502259ad0.png

e3a4ff9c-fccb-11ed-90ce-dac502259ad0.png

結(jié)論

持續(xù)分析性能是滿足最終用戶期望的關(guān)鍵因素。如果出現(xiàn)性能問(wèn)題,您必須準(zhǔn)備好在影響最終用戶體驗(yàn)之前診斷問(wèn)題。

因此,請(qǐng)繼續(xù)優(yōu)化您的應(yīng)用程序并立即解決問(wèn)題,以繼續(xù)使用 Pyroscope 等工具為用戶提供超快速的應(yīng)用程序性能。Pyroscope 展示了一層可見(jiàn)性,可幫助您了解如何在生產(chǎn)環(huán)境中提高代碼性能并降低云基礎(chǔ)架構(gòu)成本。

鏈接:https://zhuanlan.zhihu.com/p/620738986


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 開(kāi)源
    +關(guān)注

    關(guān)注

    3

    文章

    3691

    瀏覽量

    43850
  • 開(kāi)發(fā)人員
    +關(guān)注

    關(guān)注

    0

    文章

    19

    瀏覽量

    6781
  • kubernetes
    +關(guān)注

    關(guān)注

    0

    文章

    245

    瀏覽量

    9075

原文標(biāo)題:解密服務(wù)性能利器:Pyroscope讓你的應(yīng)用飛起來(lái)

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    論壇秘密,急于求助時(shí)就冷淡,沒(méi)有問(wèn)題時(shí)人多飛起來(lái)!覺(jué)得進(jìn)來(lái)頂

    本帖最后由 gk320830 于 2015-3-9 12:22 編輯 看了標(biāo)題就知道我的意思了急于求助時(shí)就冷淡,沒(méi)有問(wèn)題時(shí)人多飛起來(lái)
    發(fā)表于 05-20 10:23

    的軟件飛起來(lái)

    感覺(jué)寫(xiě)的不錯(cuò),前來(lái)分享,做分享達(dá)人。。。{:soso_e106:}
    發(fā)表于 08-02 13:01

    的代碼飛起來(lái)》 教你如何優(yōu)化代碼

    的代碼飛起來(lái)
    發(fā)表于 04-18 12:09

    的軟件飛起來(lái)

    本帖最后由 1563661808 于 2014-3-25 15:30 編輯 分享一個(gè)講解軟件優(yōu)化的文檔,覺(jué)得講的挺好的!是有關(guān)攝像頭編程的資料,頂一下
    發(fā)表于 08-28 01:33

    歪果仁做的超大殲星艦,可以飛起來(lái)的哦!

    ,這兩個(gè)不同尺寸版本的殲星艦都飛了起來(lái)!小型版本殲星艦的制作時(shí)間只有幾個(gè)小時(shí),在測(cè)試過(guò)程中我們收集了關(guān)于飛機(jī)平衡等方面的信息,為我們制作4米長(zhǎng)的大型殲星艦打下了基礎(chǔ)。結(jié)構(gòu)制造過(guò)程要讓一個(gè)大東西飛起來(lái)首先要
    發(fā)表于 12-28 14:59

    的軟件飛起來(lái)

    的軟件飛起來(lái)
    發(fā)表于 11-05 14:54

    四軸不夠力飛起來(lái)

    四軸整重52g。程序參考匿名。不加PID,直接調(diào)油門(mén),加到最大,就平移一點(diǎn),不夠力飛起來(lái)。但是就算是加到最大,電機(jī)轉(zhuǎn)速也沒(méi)到最大。直接調(diào)轉(zhuǎn)速的的話。就是占空比大約在380/1000左右最大,再上去
    發(fā)表于 04-22 00:35

    人工神經(jīng)網(wǎng)絡(luò)之深度學(xué)習(xí)

    人類(lèi)的好奇心是科學(xué)技術(shù)進(jìn)步的源泉。飛機(jī)的發(fā)明就是人類(lèi)對(duì)鳥(niǎo)類(lèi)飛行的好奇心產(chǎn)生的,一開(kāi)始是在奴隸的身上安裝類(lèi)似羽毛的紡織物,奴隸從懸崖上面跳下去,結(jié)果奴隸無(wú)法像鳥(niǎo)兒那樣的飛起來(lái)。后來(lái),模仿蝙蝠的翅膀
    發(fā)表于 07-12 07:03

    面向云計(jì)算的服務(wù)性能模型研究

    為了衡量云計(jì)算的服務(wù)性能,分析了云計(jì)算服務(wù)的處理過(guò)程,提出了一個(gè)以排隊(duì)論為基礎(chǔ)的云計(jì)算服務(wù)性能模型。以Amazon SimpleDB的更新延遲為例,仿真驗(yàn)證了該模型,并以此為基礎(chǔ),分
    發(fā)表于 10-24 12:05 ?38次下載
    面向云計(jì)算的<b class='flag-5'>服務(wù)性能</b>模型研究

    的程序飛起來(lái)

    的程序飛起來(lái)
    發(fā)表于 10-25 10:18 ?12次下載
    <b class='flag-5'>讓</b><b class='flag-5'>你</b>的程序<b class='flag-5'>飛起來(lái)</b>

    的愛(ài)“寫(xiě)”在美圖T9手機(jī)上,七夕它替勇敢告白!

    假如人品大爆發(fā),買(mǎi)了美圖T9手機(jī)還免費(fèi)收獲了一套ysl圣羅蘭唇釉套裝,估計(jì)的女朋友會(huì)開(kāi)心到飛起來(lái)哦!
    發(fā)表于 08-07 17:37 ?557次閱讀

    電腦卡慢惹人煩 這五個(gè)妙招可以Linux飛起來(lái)

    玩兒電腦最怕的就是卡慢,那么電腦卡慢應(yīng)該怎么解決呢?對(duì)于windows系統(tǒng)來(lái)說(shuō),可能有各種免費(fèi)的殺毒軟件、全家桶幫你清空系統(tǒng)空間,那么Linux系統(tǒng)怎么辦?今天筆者就為大家介紹幾種方法,清空的Ubuntu或者其他基于Ubuntu的Linux系統(tǒng),
    發(fā)表于 04-18 15:26 ?1628次閱讀

    旋轉(zhuǎn)飛椅為什么會(huì)飛起來(lái)?

    旋轉(zhuǎn)飛椅為什么會(huì)飛起來(lái)
    發(fā)表于 04-06 16:45 ?0次下載
    旋轉(zhuǎn)飛椅為什么會(huì)<b class='flag-5'>飛起來(lái)</b>?

    超簡(jiǎn)單:用PythonExcel飛起來(lái)

    超簡(jiǎn)單:用PythonExcel飛起來(lái)
    發(fā)表于 05-25 10:46 ?58次下載

    優(yōu)步革新服務(wù)服務(wù)性動(dòng)物乘車(chē)體驗(yàn)再升級(jí)

    據(jù)悉,優(yōu)步(Uber)推出了一項(xiàng)新功能,旨在殘障人士攜帶服務(wù)性動(dòng)物乘車(chē)變得更加容易。 多年來(lái),優(yōu)步對(duì)于服務(wù)性動(dòng)物的政策一直符合州和聯(lián)邦法律:它們隨時(shí)都可以乘車(chē)且無(wú)需額外付費(fèi)。但現(xiàn)在,該公司允許顧客
    的頭像 發(fā)表于 02-10 09:34 ?688次閱讀