ali arthas 火焰图_使用arthas 生成火焰图分析jvm

本文介绍了如何利用阿里巴巴的开源工具arthas在Docker环境下生成JVM的火焰图,通过docker-compose配置Web服务器展示火焰图,并提供了一个简单的压力测试流程。火焰图能够帮助分析性能瓶颈,而arthas集成在Docker镜像中,便于性能调优。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

arthas 是阿里巴巴开源的强大的jvm 应该分析工具,以下是使用arthas 生成jvm 火焰图的一个学习

项目使用docker-compose 运行,对于生成的火焰图使用nginx 提供一个访问入口

环境准备

docker-compose 文件

version: "3"

services:

web:

image: openresty/openresty:alpine

ports:

- "8090:80"

volumes:

- "./flamegraph:/opt/mywebs"

- "./nginx.conf:/usr/local/openresty/nginx/conf/nginx.conf"

app:

build: ./

cap_add:

- ALL

ports:

- "8080:8080"

volumes:

- "./flamegraph:/usr/local/tomcat/arthas-output"

tomcat 集成arthas dockerfile

FROM tomcat

# copy arthas

COPY --from=hengyunabc/arthas:latest /opt/arthas /opt/arthas

nginx config

worker_processes 1;

user root;

events {

worker_connections 1024;

}

http {

include mime.types;

default_type application/octet-stream;

sendfile on;

lua_code_cache off;

lua_need_request_body on;

gzip on;

resolver 127.0.0.11 ipv6=off;

real_ip_header X-Forwarded-For;

real_ip_recursive on;

gzip_min_length 2k;

gzip_buffers 4 16k;

log_format compression '$remote_addr - $remote_user [$time_local] '

'"$request" $status $bytes_sent '

'"$http_referer" "$http_user_agent" "$gzip_ratio"';

gzip_comp_level 4;

gzip_types text/plain text/css image/png application/javascript image/jpeg image/gif;

server {

listen 80;

server_name _;

charset utf-8;

default_type text/html;

root /opt/mywebs;

location / {

default_type text/plain;

autoindex on;

}

location = /empty {

empty_gif;

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root html;

}

}

}

使用

启动

docker-compose up -d

进入tomcat 启动arthas

docker-compose exec app sh

java -jar /opt/arthas/arthas-boot.jar

选择进程id 默认为1

开启profiler

生成火焰图

profiler start

一个简单的压力测试

ab -n 20000 -c 200 http://localhost:8080/

停止profiler

profiler stop

查看火焰图

说明

以上是一个简单的学习使用,开启容器的profiler 需要添加cap 为了简单,添加了all,arthas 功能很强大,是一把利器,同时集成到docker

镜像中,可以方便的分析一些性能瓶颈

参考资料

火焰图分析openresty性能瓶颈

注:本文操作基于CentOS 系统 准备工作 用wget从https://sourceware.org/systemtap/ftp/releases/下载最新版的systemtap.tar.gz压缩包 ...

用 CPI 火焰图分析 Linux 性能问题

https://yq.aliyun.com/articles/465499 用 CPI 火焰图分析 Linux 性能问题   yangoliver 2018-02-11 16:05:53 浏览1076 ...

火焰图分析CPU性能问题

1.找出应用程序或内核消耗CPU的PID 2.执行perf record 命令,记录该PID的行为 perf record -a -g -p 14851 -- sleep 30 --30秒后退出 3. ...

perf + Flame Graph火焰图分析程序性能

1.perf命令简要介绍 性能调优时,我们通常需要分析查找到程序百分比高的热点代码片段,这便需要使用 perf record 记录单个函数级别的统计信息,并使用 perf report 来显示统计结果 ...

[转]perf + 火焰图分析程序性能

1.perf命令简要介绍 性能调优时,我们通常需要分析查找到程序百分比高的热点代码片段,这便需要使用 perf record 记录单个函数级别的统计信息,并使用 perf report 来显示统计结果 ...

perf + 火焰图分析程序性能

1.perf命令简要介绍 性能调优时,我们通常需要分析查找到程序百分比高的热点代码片段,这便需要使用 perf record 记录单个函数级别的统计信息,并使用 perf report 来显示统计结果 ...

Skynet服务热点火焰图分析

最近花了一周时间对场景服务进行热点分析,利用以前的火焰图工具做了一点微小的贡献,分享下心得(仓库地址在https://github.com/spin6lock/skynet_systemtap_set ...

使用FlameGraph火焰图分析JAVA应用性能

开源项目推荐 Pepper Metrics是我与同事开发的一个开源工具(https://github.com/zrbcool/pepper-metrics),其通过收集jedis/mybatis/ht ...

Linux下用火焰图进行性能分析【转】

转自:https://blog.youkuaiyun.com/gatieme/article/details/78885908 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原 ...

随机推荐

iOS 字符串删除 DOM

iOS  string 删除 包含的 DOM NSMutableString *mutableString = [NSMutableString stringWithString:responseSt ...

Android自定义控件(二)

这一篇主要来讲一下自定义控件中的自定义viewgroup,我们以项目中最常用的下拉刷新和加载更多组件为例 简单介绍一下自定义viewgroup时应该怎么做. 分析:下拉刷新和加载更多的原理和步骤 自定 ...

HUST 1017 - Exact cover (Dancing Links 模板题)

1017 - Exact cover 时间限制:15秒 内存限制:128兆 自定评测 5584 次提交 2975 次通过 题目描述 There is an N*M matrix with only 0 ...

继续寻找app开发的技术方案

大概12年下半年开始,才有app开发已经来到身边的感觉. 但也一直只是感觉,没想到自己得亲身上阵. 由于要一个人做(帮朋友倒腾倒腾),而且要跨平台,而且前后台都要弄,而且时间有限. 最终选了web方式 ...

python 校招信息爬虫程序

发现一个爬虫程序,正在学习中: https://github.com/lizherui/spider_python

使用Xcode插件,让iOS开发更加便捷

在iOS开发过程中,写注释是一项必不可少的工作.这不仅有助于自己对代码整理回顾,而且提高了代码的可读性,让代码维护变得容易.但是,写注释又是一项枯燥的工作.我们浪费了大量的时间在输入/*,*,*/这样 ...

CDI services--Event(事件)

Cdi中的event事件,是整个CDI的精华所在之一.其有点类似设计模式中的观察者模式.但也有不同的地方.如下3点: 不仅是生产者(producers)从观察者(observers)解耦.观察者也从生 ...

瀑布 敏捷 精益 devops

敏捷:  分工角色  大项目分小项目   每个节点时间设置里程碑 Scrum实施的核心可以概括为“化繁为简”,从几个维度解释下: 团队角色的定义,将团队人员定义为三个角色,Scrum Master(主 ...

js实现字体闪烁

function changeColor(){ var color="#f00|#0f0|#00f|#880|#808|#088|yellow|green|blue|gray"; ...

python学习之——import sys模块

(1)sys.argv sys模块中的argv变量通过使用点号指明——sys.argv——这种方法的一个优势是这个名称不会与任何在你的程序中使用的argv变量冲突.另外,它也清晰地表明了这个名称是sy ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值