使用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工作流里责任链模式的应用 一.简单理解责 ...
随机推荐
- Hystrix 超时配置的N种玩法
前阵子在我的知识星球中,有位朋友对我提了个问题,问我如何让Hystrix支持对接口级别的超时配置,今天给大家写篇文章,普及下Hystrix配置超时的几种方式. 至于以后你是用阿里的Sentinel还是 ...
- 强大的性能监测工具dstat
强大的性能监测工具dstat 本节分为以下几个部分: dstat介绍: dstat命令是一个用来替换vmstat.iostat.netstat.nfsstat和ifstat这些命令的工具,是一个全能系 ...
- Python连载17-排序函数&返回函数的函数
一.高阶函数-排序 1.定义:把一个序列按照给定算法进行排序 2.key:在排序前对每一个元素进行key函数运算,可以理解成按照key函数定义的逻辑进行排序 3.python2和python3相差巨大 ...
- mongodb 导出制定的查询结果
1.mongo查询语句: db.quarkContext.find({"submitTime":{"$gt":ISODate("2019-07-13T ...
- NoSql之Redis系列(.Net Core)
一. 简介 1. 什么是Redis? 全称“Remote Dictionary Server”,基于内存管理数据,它有多种数据结构(常用的5种),分别应对不同场景:它是单线程模型的,所以不会存在并发问 ...
- S-T-E-A-M Science Technology Engineering Art Mathematics 五种思维模式
S-T-E-A-M五个英文字母分别代表 Science 科学,Technology 技术,Engineering 工程,Art 艺术以及 Mathematics 数学.它们并不是简单地整合原来的分科体 ...
- 微信分享网页时自定义缩略图和简介(.net版本)
要实现微信分享网页时自定义缩略图和简介,需开发者在公众平台网站中创建公众号.获取接口权限后,通过微信JS-SDK的分享接口,来实现微信分享功能. 下面来说明实现步骤. 第一部分 准备步骤 步骤一:注册 ...
- 引用kernel32.dll中的API来进行串口通讯
串口通讯可以引出kernel32.dll中的API来操作,相关源码如下:using System;using System.Runtime.InteropServices; namespace Tel ...
- hashmap与hashtable的本质区别
HashMap 底层数据结构是哈希表.线程不安全,效率高 哈希表依赖两个方法:hashCode()和equals() 执行顺序: ...
- sql2008好看的字体