容器中进程分析失败
现象描述
对Docker容器中Java进程进行Java热点分析,采集结果无数据,后台Java应用进程打印报错“[ERROR] No access to perf events. Try --fdtransfer or --all-user option or 'sysctl kernel.perf_event_paranoid=1'”,使用sysctl kernel.perf_event_paranoid=1命令后仍无法正常采集火焰图。
图1 报错信息

可能原因
创建并运行Docker容器时,未赋予容器高权限,导致容器内执行perf命令失效。
处理步骤
在启动Docker容器时,增加权限--privileged=true(赋予容器几乎所有权限)或--cap-add SYS_ADMIN(赋予容器执行系统级操作的权限),可以参考下述命令启动并运行Docker容器。
docker run -it --name=dockername --privileged=true [IMAGE] /sbin/init
或:
docker run -it --name=dockername --cap-add SYS_ADMIN [IMAGE] /sbin/init
父主题: FAQ