async-profiler 二进制包三种机器 10 分钟拿到能跑的二进制【免费下载链接】async-profilerSampling CPU and HEAP profiler for Java featuring AsyncGetCallTrace perf_events项目地址: https://gitcode.com/GitHub_Trending/as/async-profiler给 Java 应用做性能排查卡住你的往往不是用法而是 async-profiler 二进制包本身怎么弄到手。按有网服务器、隔离离线机、Docker 容器三条路走你都能快速拿到可用的 asprof 和 libasyncProfiler 并验证通过。先确认你的机器属于哪种对号入座后面只走对应那条路你的机器关键条件走哪条路有网的 Linux 服务器能 git clone装了 JDK 8 和 gcc场景A现场编译内网隔离机器断外网但有同架构的有网机器场景B编译后拷贝Mac 本地开发macOS 10.15同场景A直接 makeJava 跑在 Docker 里宿主机能 docker场景C动手前先跑java -version和gcc --version。编译只需要 JDK要带头文件不是纯 JRE和 gccmake 4.2 也顺手确认一下。 按场景拿到能跑的二进制场景A服务器上有网现场编译思路克隆仓库跑 make allasprof 和 libasyncProfiler.so 会直接落在 build 目录下。克隆仓库并编译git clone https://gitcode.com/GitHub_Trending/as/async-profiler cd async-profiler make all想要现成可分发的包跑make release会在仓库根目录生成类似async-profiler-4.5-linux-x64.tar.gz的文件。场景B内网离线机器本地编译后拷贝思路关键是操作系统和架构要和目标机一致先查uname -s和uname -m再找台同架构的有网机器照场景A编译把整个包拷过去。在目标机上解压路径建议固定方便日后用--libpath引用tar xzf async-profiler-4.5-linux-x64.tar.gz -C /opt/ /opt/async-profiler-4.5-linux-x64/bin/asprof -v注意这里libasyncProfiler.so 要求目标环境里以相同绝对路径可见不一致就用--libpath指定。场景CDocker 容器里直接用思路镜像里带一个 asprof用--pidhost拿到宿主视角的 PID直接 attach 容器里的 Java 进程。仓库里 Dockerfile 现成的。构建镜像并运行docker build -f docker/alpine.Dockerfile -t asprof:alpine .docker run --rm --pidhost --cap-add SYS_ADMIN --security-opt seccompunconfined \ -v /opt:/opt asprof:alpine asprof -d 30 目标进程PID--cap-add SYS_ADMIN和放开 seccomp 是为了让 perf_event_open 能过权限给得宽用完的机器别再挂着这套配置。✅ 拿到之后先验一下查版本看到下面这种输出就说明二进制是好的./build/bin/asprof -vAsync-profiler 4.5 built on Sep 17 2026冒烟测试随便挑一个 Java 进程采 5 秒输出里出现Total samples:和方法占比表就算通过。./build/bin/asprof -d 5 $(jps | grep -v Jps | awk {print $1} | head -1)最终产出长这样一张交互火焰图验证失败最常见的一条make 时报java.h: No such file。是 JAVA_HOME 指向了 JRE。装完整 JDK 后重新导出再编译export JAVA_HOME$(dirname $(dirname $(readlink -f $(which java))))⚠️ 几个容易踩的坑现象采样报 perf 事件权限错或抓不到内核栈。原因内核参数限制。执行sudo sysctl kernel.perf_event_paranoid1 kernel.kptr_restrict0。提醒这是全局放宽权限生产机上改之前先走变更审批。现象make 失败找不到linux/jni_md.h。原因装的是 JRE没有头文件。修复装完整 JDK比如apt install openjdk-11-jdk-headless重新导出 JAVA_HOME。现象容器场景 attach 失败提示找不到 profiler 库。原因容器内没有宿主机同路径的 libasyncProfiler.so。修复加--libpath指定路径实在不行退回-e ctimer模式精度会差一些。接下来可以深入的方向如果你要把采样参数、事件类型玩明白看这里docs/ProfilerOptions.md如果你要从火焰图里读出慢在哪看这里docs/FlamegraphInterpretation.md如果你想把 profiler 集成进应用代码看这里src/api/one/profiler/AsyncProfiler.java二进制包就位直接开测吧。【免费下载链接】async-profilerSampling CPU and HEAP profiler for Java featuring AsyncGetCallTrace perf_events项目地址: https://gitcode.com/GitHub_Trending/as/async-profiler创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考