当前位置: 首页 > news >正文

Arthas生成火焰图命令报错汇总

操作步骤

1、在容器中集成了arthas诊断和调试工具,想生产火焰图,执行profiler start,报错

如下:

[arthas@1]$ profiler start
AsyncProfiler error: Can not find libasyncProfiler so, please check the arthas directory.

2、发现alpine基础镜像中缺乏libstdc++.so.6库,于是按照提示安装libstdc++,容器中执行命令apk add libstdc++,报错如下:

/home # apk add libstdc++
fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.12/main: IO ERROR
WARNING: Ignoring APKINDEX.2c4ac24e.tar.gz: No such file or directory
fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/community/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.12/community: IO ERROR
WARNING: Ignoring APKINDEX.40a3604f.tar.gz: No such file or directory
ERROR: unsatisfiable constraints:
  libstdc++ (missing):
    required by: world[libstdc++]

 

通过报错提示可以得出,是dl-cdn.alpinelinux.org这个仓库找不到对应的文件,默认的软件仓库在国外

解法:使用国内的软件包镜像

在容器中分别执行如下命令即可

// 使用国内源完全覆盖 /etc/apk/repositories,执行下属命令
echo -e http://mirrors.ustc.edu.cn/alpine/v3.12/main/ > /etc/apk/repositories// 更新
apk updateapk add libstdc++

注意:在容器中执行只是临时生效,如果容器重启,这些配置又会丢失

配置永久生效,需要在dockerfile文件中加入如下命令

RUN echo -e http://mirrors.ustc.edu.cn/alpine/v3.12/main/ > /etc/apk/repositories
RUN apk update
RUN apk add libstdc++

 如果docker容器是通过docker-compose构建的,则需要重新build,例如:

docker-compose -f docker-compose.yml build

docker-compose -f docker-compose.yml up -d

3、再次执行profiler start,又出现了如下错误

Perf events unavailable. See stderr of the target process.

官方列出了以下原因:
/proc/sys/kernel/perf_event_paranoid 设置为受限模式(> = 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.(操作系统在不虚拟化性能计数器的管理程序下运行。)
perf_event_open API is not supported on this system, e.g. WSL.(该系统不支持perf_event_open API,例如WSL。)

 看下系统的/proc/sys/kernel/perf_event_paranoid 这个配置项

[arthas@1]$  cat /proc/sys/kernel/perf_event_paranoid
2

发现该系统配置参数的值确实是大于等于2。 根据官方文档的描述。尝试将/proc/sys/kernel/perf_event_paranoid的值设置为1

[arthas@1]$ echo 1 > /proc/sys/kernel/perf_event_paranoid
[arthas@1]$ bash: /proc/sys/kernel/perf_event_paranoid: Read-only file system

说明权限不足。这时问题又来,通常情况下基础镜像的都是使用的非root权限。如果我们硬要修改这个配置项,需要重新构建镜像了

解决方案

Docker

修改docker-compose.yml,增加

    cap_add:
        - SYS_ADMIN

例如:

version: '1'
services:xxx:container_name: xxxhostname: xxximage: xxx...# 使得arthas中可以打印火焰图cap_add:- SYS_ADMIN

k8s

修改svc配置文件,增加

      securityContext:
        capabilities:
          add: ["SYS_ADMIN"] 

例如:

metadata:labels:service: servie1
spec:containers:- image: "alpine:3.4"command: ["/bin/echo", "hello", "world"]# 使得arthas中可以打印火焰图securityContext:capabilities:add:- SYS_ADMIN

重新构建下镜像即可
 

http://www.lryc.cn/news/210702.html

相关文章:

  • 【PyQt学习篇 · ⑤】:QWidget - 鼠标操作
  • 2-多媒体数据压缩国际标准-Part3
  • 使用Go模块进行依赖管理
  • 人工智能与航天技术的融合:未来发展的新趋势
  • 私有云:【11】win10安装Agent客户端组件
  • 什么是程序化交易
  • 企业如何安全跨国传输30T文件数据
  • 【Linux】centos安装配置及远程连接工具的使用
  • 算法|每日一题|掷骰子等于目标和的方法数|动态规划
  • Java架构师软件工程全流程
  • 深度学习中Transformer的简单理解
  • Java架构师系统安全
  • Stable Diffusion 图生图+ControlNet list index out of range
  • SylixOS BSP开发(七)
  • 多媒体应用设计师 第15章 多媒体素材的制作和集成
  • CentOS和Ubuntu命令行方式配置静态IP
  • 服务器快速申请免费SSL证书_2023年10月29日可用
  • ChatGPT专业术语及有效使用方法概述
  • ffmpeg 视频转图片 图片集转视频
  • Zabbix安装与部署
  • kafka代码示例
  • 文件夹批量改名:如何在文件夹名左边添加递增的自动编号
  • Flash(Animate)和木疙瘩的元件学习和理解
  • C#两个表多条件关联写法
  • VSCode-C/C++环境配置
  • 第八周实验记录
  • Spring Cloud Alibaba Seata 实现 SAGA 事物
  • npm install报错,解决记录
  • LSM树原理详解
  • Linux系统编程_网络编程:字节序、socket、serverclient、ftp 云盘