中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

如何實現(xiàn)容器中生成火焰圖

這篇文章主要介紹“如何實現(xiàn)容器中生成火焰圖”,在日常操作中,相信很多人在如何實現(xiàn)容器中生成火焰圖問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何實現(xiàn)容器中生成火焰圖”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

站在用戶的角度思考問題,與客戶深入溝通,找到碌曲網(wǎng)站設(shè)計與碌曲網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站建設(shè)、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、主機(jī)域名、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋碌曲地區(qū)。

Arthas(阿爾薩斯)是阿里巴巴開源的 Java 診斷工具,深受開發(fā)者喜愛。

  • 當(dāng)你遇到以下類似問題而束手無策時,Arthas 可以幫助你解決:

  • 這個類從哪個 jar 包加載的?為什么會報各種類相關(guān)的 Exception?

  • 我改的代碼為什么沒有執(zhí)行到?難道是我沒 commit?分支搞錯了?

  • 遇到問題無法在線上 debug,難道只能通過加日志再重新發(fā)布嗎?

  • 線上遇到某個用戶的數(shù)據(jù)處理有問題,但線上同樣無法 debug,線下無法重現(xiàn)!

  • 是否有一個全局視角來查看系統(tǒng)的運(yùn)行狀況?

  • 有什么辦法可以監(jiān)控到JVM的實時運(yùn)行狀態(tài)?

一、背景

arthas的github倉庫中曾經(jīng)有人提過這樣一個issue。錯誤信息如下:

Perf events unavailable. See stderr of the target process.

為什么我要寫這篇博客,筆者在arthas官方倉庫中發(fā)現(xiàn)官方的回復(fù)里只是給了一個指向async-profiler官方的地址, 很多人可能順著給出的地址去async-profiler官方文檔看了也是非常的懵。并且async-profiler描述也不一定找到好的解決方案。 因此,寫這邊博客的目的是幫助大家后續(xù)在遇到這個問題時能夠有一個其它的方案去解決問題。 下面筆者將帶著大家一步一步的解決,arthas在容器中生成火焰圖報錯的問題。

二、 alpine容器鏡像中生成火焰圖

如何在自己的鏡像中添加arthas,請直接看官方網(wǎng)站,如果不了解的怎么使用arthas的同學(xué)也請先去官網(wǎng)看資料。

生成火焰圖:

[arthas@1]$ profiler start
AsyncProfiler error: /opt/arthas/async-profiler/libasyncProfiler-linux-x64.so: libstdc++.so.6: cannot open shared object file or directory

執(zhí)行命令后發(fā)現(xiàn)alpine基礎(chǔ)鏡像中缺乏libstdc++.so.6庫,遇事不要慌,現(xiàn)在安裝下libstdc++。

[root@node-znjj-131-146 testYaml]# kubectl exec -it springboot-tomcat-deployment-7577ccdd9d-4rpc4 /bin/bash
bash-4.4# apk add libstdc++
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz
(1/1) Installing libstdc++ (8.3.0-r0)
Executing glibc-bin-2.29-r0.trigger
OK: 32 MiB in 39 packages

安裝完成后在執(zhí)行arthas的生成火焰圖命令。

[arthas@1]$ profiler start
Perf events unavailable. See stderr of the target process.

不好了,又出現(xiàn)了新的問題了。這個問題通常是出現(xiàn)在容器環(huán)境中。 arthus實際是利用async-profiler去完成的。在async-profiler官方地址的README中有提到改問題。

Perf events unavailble. See stderr of the target process.

perf_event_open() syscall has failed. The error message is printed to the error stream of the target JVM.

Typical reasons include:

  • /proc/sys/kernel/perf_event_paranoid is set to restricted mode (>=2). /proc/sys/kernel/perf_event_paranoid 設(shè)置為受限模式(> = 2)

  • seccomp disables perf_event_open API in a container(seccomp禁用容器中的perf_event_open API。).

  • OS runs under a hypervisor that does not virtualize performance counters.(操作系統(tǒng)在不虛擬化性能計數(shù)器的管理程序下運(yùn)行。)

  • perf_event_open API is not supported on this system, e.g. WSL.(該系統(tǒng)不支持perf_event_open API,例如WSL。)

我們這里來好看下系統(tǒng)的/proc/sys/kernel/perf_event_paranoid 這個配置項。

bash-4.4# cat /proc/sys/kernel/perf_event_paranoid
2

發(fā)現(xiàn)該系統(tǒng)配置參數(shù)的值確實是大于等于2。 根據(jù)官方文檔的描述。嘗試將/proc/sys/kernel/perf_event_paranoid的值設(shè)置為1。

bash-4.4# echo 1 > /proc/sys/kernel/perf_event_paranoid
bash-4.4# bash: /proc/sys/kernel/perf_event_paranoid: Read-only file system

說明權(quán)限不足。這時問題又來,通常情況下基礎(chǔ)鏡像的都是使用的非root權(quán)限。如果我們硬要修改這個配置項,第一想到的可能只能重新構(gòu)建鏡像了。在構(gòu)建鏡像的時候修改基礎(chǔ)鏡像的用戶,然后設(shè)置系統(tǒng)參數(shù)。

這帶來了新的問題:

  • 新的基礎(chǔ)鏡像變更后帶來了安全問題。

  • 所有需要的嘗試生成火焰圖的更改基礎(chǔ)鏡像。

這是稍微思考下,我們發(fā)現(xiàn)kubernetes下或者docker中都允許我們變更容器的權(quán)限。

在docker中可以使用--cap-add SYS_ADMIN命令選項來指定。

docker run  --cap-add=SYS_ADMIN {container}

在kubernetes中可以通過securityContext來設(shè)置。修改你的deployment部署文件,配置參考如下。

containers:
    - name: springboot-tomcat
      image: registry.cn-shanghai.aliyuncs.com/shalousun/springboot:2.3.4-tomcat
      imagePullPolicy: Always
      securityContext:
        capabilities:
          add: ["SYS_ADMIN"]

配置好后重新在kubernetes中部署就好了。部署好重新進(jìn)入容器后就可以正常按照arthas官方的命令執(zhí)行了。

[arthas@1]$ profiler start
Started [cpu] profiling
[arthas@1]$ profiler getSamples
3
[arthas@1]$ profiler status
[perf] profiling is running for 28 seconds
[arthas@1]$ profiler stop
OK
profiler output file: /arthas-output/20201109-181906.svg

到此,關(guān)于“如何實現(xiàn)容器中生成火焰圖”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

本文題目:如何實現(xiàn)容器中生成火焰圖
本文網(wǎng)址:http://www.rwnh.cn/article46/jipdeg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、外貿(mào)建站云服務(wù)器、網(wǎng)站導(dǎo)航關(guān)鍵詞優(yōu)化、服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
葫芦岛市| 舒兰市| 万州区| 潞城市| 定日县| 仪征市| 普兰店市| 景泰县| 大连市| 枣阳市| 昭苏县| 桂平市| 清河县| 浮梁县| 错那县| 开鲁县| 阿瓦提县| 余干县| 皋兰县| 谷城县| 措美县| 沾化县| 根河市| 宣城市| 丰宁| 措勤县| 疏附县| 游戏| 东山县| 兰州市| 益阳市| 海淀区| 凌海市| 昌黎县| 米泉市| 池州市| 礼泉县| 沁水县| 柘荣县| 固镇县| 勐海县|