阿里云-spring boot接入arms監控

目標:在ecs中啟動一個java應用,且攜帶arms監控

原理:在java應用啟動時,同時啟動一個agent探針,時刻監控java應用變化(如:接口調用、CPU、線程池狀態等)

1.arms接入中心添加java應用

若是容器集群環境,則選擇容器服務環境

手動安裝方式,是手動把 agent的jar包放到 ecs服務器,然后運行個人的spring boot服務時,加上一些參數,將agent也啟動運行

會一直等待2步驟的java應用集成agent成功

2.linux的java應用集成agent

2.1?linux下載添加agent

監控的是ecs中的java應用,因此要將agent下載到ecs中

添加unzip指令集,并解壓縮

2.2 啟動java應用、agent探針

java -javaagent:/home/admin/AliyunJavaAgent/aliyun-java-agent.jar -Darms.licenseKey=dnnlqal****** -Darms.appName=my-service -jar arms-0.0.1-SNAPSHOT.jar

?/home/admin? 是agent在ecs中的實際路徑

最后的? -jar *.jar & 是啟動的自己的java服務jar包

啟動

3.集成的效果

3.1 接口調用

3.2 JVM監控

3.3 線程池監控

限制:僅支持部分框架

3.4 持續性能刨析

作用:分析內存占用、接口cpu耗時函數

4. 利用arms解決線上問題

分析“性能剖析”的火焰圖

4.1 解決內存占用異常問題

線程池組:先看下各個線程池組的內存占比,找到業務中的線程池(本圖的內存占用 arms的agent占用最多,但是我們不用分析,因此不選。。現實場景,自己的業務占用的內存占絕大多數)

可以一個個的線程池組分析、也可以先多選幾個一塊分析

現實模式:使用表格+火焰的形式。

從下往上找,自己業務的最寬的方法,就是導致占用內存較多的原因。

org.draymond.arms.ArmsThreadTest.extracted(String)

?在代碼中找到對應的位置,然后分析原因

4.2 解決接口慢問題

trace?+ 火焰圖

1.通過trace先定位哪個接口慢

找到一個慢的traceId

詳情里面有各個span的耗時(因為我只開了一個服務,也沒有手動添加span,所以沒有其他span了)

不足:該接口內部的邏輯,不確定哪個地方是卡點

但是使用 “代碼整體執行時間火焰圖” 輔助分析

從trace中找到慢的 服務 與 慢方法

搜索自己業務的路徑

arms/byte/id

調用關系:

org.draymond.arms.ArmsController.bytesTest(Integer)

org.draymond.arms.ArmsService.bytesTest(Integer)

org.draymond.arms.ArmsService.sleepNumberTime(Integer)

入口:.ArmsController.bytesTest 花費??7.15 m, 占比49%

最耗時方法:ArmsService.sleepNumberTime

定位:最根本的是?sleepNumberTime 的sleep占用了大量時間。

4.3 解決CPU不穩定問題

方式:利用CPU火焰圖,對比CPU穩定、不穩定 時的CPU占用情況,找到引起CPU飆升的業務,分析,解決

4.4 解決GC頻繁問題

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/912697.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/912697.shtml
英文地址,請注明出處:http://en.pswp.cn/news/912697.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

昆泰芯3D霍爾磁傳感器芯片在汽車零部件中的應用

HUD即抬頭顯示系統(Head-Up Display),HUD 是一種將重要的車輛或飛行等相關信息(如速度、導航指示、警告信息等)投射到駕駛員或操作員前方視野范圍內的透明顯示屏或直接投射到風擋玻璃上的技術。 HUD即抬頭顯示系統(Head-Up Display)&#xff…

new Vue() 的底層工作原理

當你調用 new Vue() 時,Vue.js 會執行一系列復雜的初始化過程。讓我們深入剖析這個看似簡單的操作背后發生的事情: 1. 初始化階段 (1) 內部初始化 function Vue(options) {if (!(this instanceof Vue)) {warn(Vue is a constructor and should be cal…

最簡安裝SUSE15SP7導致大部分命令缺失

我嘞個去~~~明明選擇Enable了ssh,結果也沒給裝。 俺習慣使用NetworkManager管理網絡,沒給裝,用不了nmcli和nmtui。不高興歸不高興,最簡安裝的話,也情有可原。我嘞個去去~~連ping、vi都沒有裝,這也太簡了。…

Vue-14-前端框架Vue之應用基礎嵌套路由和路由傳參

文章目錄 1 嵌套路由1.1 News.vue1.2 Detail.vue1.3 router/index.ts2 路由傳參2.1 query參數2.1.1 News.vue(傳遞參數)2.1.2 Detail.vue(接收參數)2.2 params參數2.2.1 router/index.ts(需要提前占位)2.2.2 News.vue(傳遞參數)2.2.3 Detail.vue(接收參數)2.3 props配置2.3.1 r…

Python網安-ftp服務暴力破解(僅供學習)

目錄 源碼在這里 需要導入的模塊 連接ftp,并設置密碼本和線程 核心代碼 設置線程 源碼在這里 https://github.com/Wist-fully/Attack/tree/cracker 需要導入的模塊 import ftplib from threading import Thread import queue 連接ftp,并設置密碼…

ES6數組的`flat()`和`flatMap()`函數用法

今天給大家分享ES6中兩個超實用的數組函數:flat()和flatMap(),學會它們能讓數組處理變得更輕松! 1. flat()函數 1.1 基本介紹 flat()用于將嵌套數組"拍平",即將多維數組轉換為一維數組。 1.2 語法 const newArray …

upload-labs靶場通關詳解:第15-16關

第十五關 getimagesize函數驗證 一、分析源代碼 function isImage($filename){$types .jpeg|.png|.gif;if(file_exists($filename)){$info getimagesize($filename);$ext image_type_to_extension($info[2]);if(stripos($types,$ext)>0){return $ext;}else{return false…

【Linux】基礎IO流

好的代碼自己會說話,清晰的邏輯與優雅的結構,是程序員與世界對話的方式。 前言 這是我自己學習Linux系統編程的第五篇筆記。后期我會繼續把Linux系統編程筆記開源至博客上。 上一期筆記是關于進程: 【Linux】進程-CSDN博客https://blog.csdn…

【C語言】學習過程教訓與經驗雜談:思想準備、知識回顧(二)

🔥個人主頁:艾莉絲努力練劍 ?專欄傳送門:《C語言》、《數據結構與算法》、C語言刷題12天IO強訓、LeetCode代碼強化刷題 🍉學習方向:C/C方向 ??人生格言:為天地立心,為生民立命,為…

AD8021ARZ-REEL7【ADI】300MHz低噪聲運放放大器,高頻信號處理的性價比之選!

AD8021ARZ-REEL7(ADI)產品解析與推廣文案 1. 產品概述 AD8021ARZ-REEL7 是 Analog Devices Inc.(ADI) 推出的一款 高速、低噪聲運算放大器(Op-Amp),屬于 ADI的高性能放大器系列,專為…

WPF學習筆記(11)數據模板DataTemplate與數據模板選擇器DataTemplateSelector

數據模板DataTemplate與數據模板選擇器DataTemplateSelector 一、DataTemplate1. DataTemplate概述2. DataTemplate詳解 二、DataTemplateSelector1. DataTemplateSelector概述2. DataTemplateSelector詳解 總結 一、DataTemplate 1. DataTemplate概述 DataTemplate 表示數據…

【V6.0 - 聽覺篇】當AI學會“聽”:用聲音特征捕捉視頻的“情緒爽點”

系列回顧: 在上一篇 《AI的“火眼金睛”:用OpenCV和SHAP洞察“第一眼緣”》 中,我們成功地讓AI擁有了視覺,它已經能像一個嚴苛的“質檢員”一樣,評判我視頻的畫質和動態感。 但我的焦慮并沒有完全消除。因為我發現&a…

(5)pytest-yield操作

1. 簡介 上一篇中,我們剛剛實現了在每個用例之前執行初始化操作,那么用例執行完之后如需要清除數據(或還原)操作,可以使用 yield 來實現。fixture通過scope參數控制setup級別,既然有setup作為用例之前前的操…

C++中的cmath庫

在C編程中,數值計算是科學計算、工程應用及算法開發的基礎。cmath庫作為C標準庫的重要組成部分,提供了豐富的數學函數和工具,能夠高效處理各種數值計算任務。本文將全面解析cmath庫的核心功能,并通過實戰案例展示其強大威力。 一…

python包管理工具uv VS pip

在 Python 中,uv 和 pip 都是包管理工具,但它們的定位和特性有所不同。以下是主要區別: 1. pip(傳統工具) 定位:Python 官方的包安裝工具,是 Python 生態中最基礎的包管理器。特點:…

OpenCv基礎(C++)

1.圖像讀取與顯示 #include<opencv2/opencv.hpp> using namespace cv;Mat src imread("C:/Users/16385/Desktop/new/photo/1.jpg");//讀取圖像 Mat src imread("C:/Users/16385/Desktop/new/photo/1.jpg",IMREAD_GRAYSCALE); //將讀取的圖像轉為灰…

MySQL非阻塞創建索引的方法

文章目錄 1. Online DDL (MySQL 5.6)2. pt-online-schema-change 工具3. gh-ost 工具4. 對于MySQL 8.0注意事項 在MySQL中創建大型表索引時&#xff0c;傳統方式會阻塞表的寫操作&#xff0c;影響生產環境使用。以下是幾種非阻塞創建索引的方法&#xff1a; 1. Online DDL (My…

數字雨動畫背景

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>數字雨動畫背景</title><style>* {m…

分布式鎖的概念與應用場景

一、分布式鎖的核心概念 分布式鎖是一種在分布式系統環境下&#xff0c;用于保證多個進程/節點對共享資源實現互斥訪問的機制。其本質是通過某種中間件&#xff08;如Redis、ZooKeeper等&#xff09;實現跨節點的鎖控制&#xff0c;確保在分布式環境中&#xff0c;同一時刻只有…

js代碼09

題目 好的&#xff0c;我們繼續。 在上一個練習中&#xff0c;我們深入探討了 this 的復雜性。你會發現&#xff0c;ES6 引入的 class 語法在很大程度上就是為了簡化 this 的使用&#xff0c;并為 JavaScript 提供一個更清晰、更熟悉的面向對象編程&#xff08;OOP&#xff0…