使用async-profiler简单分析zeebe 工作流引擎的性能
刚开始的时候直接使用的系统暴露的prometheus metrics,发现越高的版本反而性能越差,期间使用过了
perf 打算使用perf 生成火焰图的,但是因为符号缺失,只找到了占用较高的任务,详细的暂时没有取到
以前大概知道一个工具perf-map-agent 可以用来生成缺失的符号,但是只是不太好,发现了async-profiler
工具,使用方便,支持的版本都,同时也支持基于容器的部署模型,但是容器运行暂时有点问题,所以直接
使用虚拟机运行,配置的分片为1,副本也为1
使用async-profiler 获取指标
- 下载工具
参考github 项目https://github.com/jvm-profiling-tools/async-profiler - 命令
./profiler.sh -d 120 -o collapsed -f more8 `pid of java`
- 生成火焰图
使用FlameGraph/flamegraph
下载地址
https://github.com/brendangregg/FlameGraph
生成火焰图命令
./FlameGraph/flamegraph.pl more8 > flamegraph8.svg
- 效果
发现大部分的占用都是raft 的读 
几个问题
- 实际看到磁盘写很大
从火焰图我们可以看出读取占用较多的时间,但是检测磁盘的话,我们发现磁盘写很大,可选的排查工具iostat 以及使用async-profiler
使用iostat 我们发现写是偶然的很大,基本都在20M左右,和我们实际看到的情况一致
使用async-profiler 可以使用tree 模式 ./profiler.sh -d 30 -t -o flat,tree -f zeebe-demo.txt pid of java 我们会发现有写,但是占用的cpu
时间并不高,如下: 
- 分区与线程的关系
官方有一个介绍是关于分区数与线程的关系,一个分区占用2个线程,和我们看到的raft-server-raft-atomix-partition 任务一致
比如下边的为4个分区的,从界面看到大概有两类,后边再看看atomix 的原理(zeebe 状态维护的底层依赖) 
目前的几个结论
- zeebe 目前版本还不太稳定
但是0.21.1 版本比以前的版本稳定 - zeebe 分区个数会严重影响系统性能
cpu 核数,磁盘io,以及集群规模都会都系统的响应有很大的影响,推荐部署使用ssd - exporter 对于系统有影响,但是并不大
在测试的过程中,为了简单exporter 的影响,删除了对于es exporter的配置,对于系统响应并不提大(通过prometheus metrics 查看) - 后边还是研究下atomix 的实现原理以及优化(zeebe 强依赖)
参考资料
一个简单的基于docker-compose 的基础环境https://github.com/rongfengliang/zeebe-debughttp-exporter-demo 实际运行结合场景
修改下配置
https://docs.zeebe.io/basics/partitions.html
https://github.com/jvm-profiling-tools/async-profiler
https://github.com/brendangregg/FlameGraph
https://github.com/atomix/atomix
https://github.com/Netflix/flamescope
使用async-profiler简单分析zeebe 工作流引擎的性能的更多相关文章
- Java三大主流开源工作流引擎技术分析
首先,这个评论是我从网上,书中,搜索和整理出来的,也许有技术点上的错误点,也许理解没那么深入.但是我是秉着学习的态度加以评论,学习,希望对大家有用,进入正题! 三大主流工作流引擎:Shark,oswo ...
- zeebe 为微服务架构的工作流引擎
zeebe 是灵活.轻量的基于微服务架构的工作流引擎 包含以下特性: 可视化的额工作流 审计日志以及历史 水平缩放 持久化&&容错 消息驱动 操作容易 语言无关 工作流基于标准bpmn ...
- 工作流引擎JFlow与activiti 对比分析(一)5种基本控制流模式的对比
为了更好的说明activiti 与jflow的两款工作流引擎的特点与区别,我们按照如下几个方面做一次全面的.客观的对比. 首先activiti是国外的一款开源的工作流程引擎,在国际上影响比较深远与广泛 ...
- Camunda工作流引擎简单入门
官网:https://camunda.com/ 官方文档:https://docs.camunda.org/get-started/spring-boot/project-setup/ 阅读新体验:h ...
- F2工作流引擎模型
工作流引擎(Workflow Engine ) [编辑] 工作流引擎概述 工作流引擎是指workflow(工作流)作为应用系统的一部分,并为之提供对各应用系统有决定作用的根据角色.分工和条件的不同决定 ...
- Slickflow.NET 开源工作流引擎高级开发(三) -- 并行分支容器与会签工作流模式的组合
前言: 流程引擎的核心功能是负责解析流程定义XML和流转,业务环节的不断积累,让人们不断总结和抽象出一些模式,这些模式统称为工作流模式(Workflow Pattern).本文的重点就是介绍一种常见 ...
- 一个适合于.NET Core的超轻量级工作流引擎:Workflow-Core
一.关于Workflow-Core 近期工作上有一个工作流的开发需求,自己基于面向对象和职责链模式捣鼓了一套小框架,后来在github上发现一个轻量级的工作流引擎轮子:Workflow-Core,看完 ...
- Java工作流引擎结合可视化表单开发,10分钟完成一个业务流程发布
回忆以前工作流引擎的应用,感觉历历在目啊!当初公司接了一个项目关于政府单位公文流转的管理系统,一开始客户跟我画了十多张业务流程图.话说这十多张业务流程图,涉及的业务范围还蛮多,像用审批授权,开通流程, ...
- Activiti工作流学习笔记(四)——工作流引擎中责任链模式的建立与应用原理
原创/朱季谦 本文需要一定责任链模式的基础,主要分成三部分讲解: 一.简单理解责任链模式概念 二.Activiti工作流里责任链模式的建立 三.Activiti工作流里责任链模式的应用 一.简单理解责 ...
随机推荐
- 在 React 组件中监听 android 手机物理返回/回退/back键事件
当前端页面嵌入到 webview 中运行时,有时会需要监听手机的物理返回按键事件来做一些自定义的操作. 比如我最近遇到的,在一个页面里面有批量选择的功能,当点击手机的返回键时,清除页面上的选中状态.我 ...
- pytorch——auto-encoders
自动编码器的训练方法: (1)Loss function for binary inputs (2)Loss function for real-valued inputs
- NXP官方ddr_stress_tester工具使用
1.前言 NXP官方提供了一个DDR初始化工具,名称为ddr_stress_tester,该工具具有以下特点: 该工具能通过USB OTG接口与目标板进行连接,通过USB OTG接口完成DDR的初始化 ...
- 【前端知识体系-JS相关】组件化和React
1. 说一下使用jQuery和使用框架的区别? 数据和视图的分离,(jQuery数据和视图混在一起,代码耦合)-------开放封闭原则 以数据驱动视图(只关注数据变化,DOM操作被封装) 2.说一下 ...
- Restful服务应不应该在URI中加入版本号
程序员们对于Restful服务应不应该在URI中加入版本信息的问题在stackoverflow上进行了积极的讨论: Best practices for API versioning ,该问题被赞了7 ...
- 使用 jQuery.TypeAhead 让文本框自动完成 (四)(自定义模板)
项目地址:https://github.com/twitter/typeahead.js 直接贴代码了: @section headSection { <script type="te ...
- Knative 基本功能深入剖析:Knative Serving 自动扩缩容 Autoscaler
Knative Serving 默认情况下,提供了开箱即用的快速.基于请求的自动扩缩容功能 - Knative Pod Autoscaler(KPA).下面带你体验如何在 Knative 中玩转 Au ...
- JSP是Servlet详解
前言:前一段时间写了好多Servlet和JSP相关的博客,自以为理解的差不多了,岂不知人外有人,天外有天,代码外还有源码,受高人点拨,看了一下Servlet源码,感触颇深,再也不敢说懂了,不明白生活的 ...
- UWP 推荐 - 限时免费的RSS阅读器《RSS 追踪》登录 Windows 10
文/云之幻 前不久,博客作者 Bravo Yeung 写了一篇还算略受欢迎的关于 RSS 的文章 .Net开发者必知的技术类RSS订阅指南. RSS 现在用的人很少了,而且就算是我,也不过是在一周前才 ...
- VM1059 bootstrap-table.min.js:7 Uncaught TypeError: Cannot read property 'classes' of undefined
参考链接:https://blog.csdn.net/liuqianspq/article/details/81868283 1.阳光明媚的下午,我在写CRUD,让数据传到前端的时候,解析的时候报错了 ...