自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

推薦一款Kubernetes應(yīng)用性能分析工具Kubectl Flame

系統(tǒng) Linux
性能分析是分析應(yīng)用程序性能來(lái)改進(jìn)代碼質(zhì)量的常用方法,最流行的可視化性能分析方法是生成火焰圖。

 

什么是性能分析?

性能分析是分析應(yīng)用程序性能來(lái)改進(jìn)代碼質(zhì)量的常用方法,最流行的可視化性能分析方法是生成火焰圖。

基于 Spring 框架的 Java 應(yīng)用的火焰圖

y軸是堆棧深度,x軸跨越樣本總體。每個(gè)矩形都是一個(gè)函數(shù),其中寬度顯示它出現(xiàn)的頻率,從左到右的排序并不重要 (堆棧按字母順序排序)。

Kubernetes 上的性能分析

性能分析是一項(xiàng)較為復(fù)雜的任務(wù),大多數(shù)探查器有兩個(gè)主要問(wèn)題:

  •  需要修改應(yīng)用程序,通??梢酝ㄟ^(guò)將標(biāo)志添加到執(zhí)行命令或?qū)⒁恍┬阅芊治鰩?kù)導(dǎo)入代碼中來(lái)實(shí)現(xiàn)。
  •  由于在分析過(guò)程中會(huì)嚴(yán)重影響性能,因此通常避免在生產(chǎn)環(huán)境中進(jìn)行性能分析。

選擇正確的探查器可能會(huì)解決這些問(wèn)題,但是這需要仔細(xì)去進(jìn)行研究,并且通常取決于編程語(yǔ)言和操作系統(tǒng)。

在 Kubernetes 集群中運(yùn)行的應(yīng)用程序上執(zhí)行分析時(shí),會(huì)變得更加困難。需要部署一個(gè)包含配置文件修改的新容器鏡像,而不是當(dāng)前正在運(yùn)行的容器。此外,當(dāng)應(yīng)用程序重新啟動(dòng)時(shí),某些性能問(wèn)題可能會(huì)消失,這就使得調(diào)試變得困難。

Kubectl flame

Kubectl Flame 是一個(gè) kubectl 插件,可以以較低的開銷生成火焰圖🔥來(lái)分析應(yīng)用程序性能,無(wú)需進(jìn)行任何應(yīng)用程序修改或停機(jī)。

項(xiàng)目倉(cāng)庫(kù)地址:https://github.com/VerizonMedia/kubectl-flame

安裝

可以通過(guò) Krew 來(lái)安裝 kubectl flame 插件,一旦安裝了 Krew,就可以通過(guò)如下命令進(jìn)行安裝: 

  1. $ kubectl krew install flame 

使用要求

  •  支持的語(yǔ)言:Go、Java(任何基于JVM的語(yǔ)言)、Python 和 Ruby
  •  使用 Docker 作為容器運(yùn)行時(shí)的 Kubernetes 集群(已在 GKE,EKS 和 AKS 上測(cè)試)

運(yùn)行原理

kubectl-flame 通過(guò)在與目標(biāo)容器相同的節(jié)點(diǎn)上啟動(dòng)一個(gè)探查器來(lái)啟動(dòng)性能分析,大多數(shù)探查器將與目標(biāo)容器共享一些資源:比如通過(guò)將 hostPID 設(shè)置為 true 來(lái)啟用 PID 命名空間共享,通過(guò)掛載 /var/lib/docker 并查詢 overlayFS 來(lái)啟用文件系統(tǒng)共享。

在后臺(tái)kubectl-flame使用 async-profiler 來(lái)為 Java 應(yīng)用程序生成火焰圖,通過(guò)共享/tmp文件夾與目標(biāo) JVM 進(jìn)行交互,Golang 則支持基于 ebpf 分析,Python 支持基于 py-spy 進(jìn)行分析。

kubectl flame 概述

使用實(shí)例

   1.  分析 Kubernetes Pod

分析 Java 應(yīng)用 mypod 1分鐘,并在將火焰圖保存到 /tmp/flamegraph.svg: 

  1. $ kubectl flame mypod -t 1m --lang java -f /tmp/flamegraph.svg 

    2.  分析基于 alpine 的容器

在基于 alpine 的容器中分析 Java 應(yīng)用程序需要使用 --alpine 標(biāo)志: 

  1. $ kubectl flame mypod -t 1m -f /tmp/flamegraph.svg --lang Java --alpine 

注意:僅 Java 應(yīng)用程序需要此 --alpine 標(biāo)志,而 Go 分析則不需要該標(biāo)志。

    3.  分析 sidecar 容器

包含多個(gè)容器的 Pod 需要將目標(biāo)容器指定為參數(shù): 

  1. $ kubectl flame mypod -t 1m --lang go -f /tmp/flamegraph.svg mycontainer 

本文轉(zhuǎn)載自:「 k8s技術(shù)圈 」,原文:http://t.cn/A6t8p02V,版權(quán)歸原作者所有。歡迎投稿,投稿郵箱: editor@hi-linux.com。 

 

責(zé)任編輯:龐桂玉 來(lái)源: 奇妙的Linux世界
相關(guān)推薦

2021-02-22 08:29:03

KubernetesKubectl Fla應(yīng)用

2021-06-09 09:52:29

開源Pyroscope代碼

2020-11-17 09:27:26

KubernetesYAMLKubeLinter

2025-04-07 08:10:00

2020-02-17 07:20:22

SSH遠(yuǎn)程連接工具Linux

2019-07-22 09:24:54

LinuxMySQL數(shù)據(jù)庫(kù)

2019-10-10 09:01:46

監(jiān)控服務(wù)器應(yīng)用

2022-05-25 16:59:27

Kubectl-IcKubernetesPod

2021-08-09 16:39:52

工具JVM剖析

2024-01-25 10:40:11

AutoProfil開源分析工具

2020-12-03 09:33:58

前端開發(fā)工具

2022-06-28 07:14:23

WizTree磁盤文件清理

2016-03-29 14:54:36

2020-12-15 07:54:40

工具Hutoolgithub

2020-12-15 15:08:17

工具Java線程

2024-03-04 08:00:00

Java開發(fā)

2018-11-26 14:30:08

Python開發(fā)工具編程語(yǔ)言

2024-02-20 07:32:18

Rsync遠(yuǎn)程同步工具傳輸數(shù)據(jù)

2019-02-25 10:18:43

工具代碼測(cè)試

2022-07-04 08:48:36

KubernetesDatreeLinux
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)