首页  

temporal压测方案及记录     所属分类 temporal 浏览量 809
整体链路如下
压测端(jpress)  echoClientApp(任务发起客户端应用) temporal-server  echoWorker(任务执行机)  postgresqlDB

jpress 是一个基于java的 带有web界面的 压测工具
可与prometheus 集成 ,支持分布式部署
可实时查看 tps 曲线 , 接口耗时分布统计图 , 接口耗时百分位值 p50 p80 p90 p95 p99等

jpress源码
https://gitee.com/dyyx/hellocode/tree/master/project/jpress


echoClientApp echoWorker 代码见
https://gitee.com/dyyx/hellocode/tree/master/demo/temporal/sdkdemo/src/main/java/com/dyyx/temporal/demo/echo
可打成一个 fat jar包 ,包含所有依赖, 内置 httpserver ,暴露http接口 与 prometheus 指标接口

 使用 maven-assembly-plugin 打包 fat jar 


启动 echoworker nohup java -cp .:temporal-echo-demo.jar com.dyyx.temporal.demo.echo.EchoWorker & 默认端口 8130 -Dhttpport=8131 指定端口 java -cp .:temporal-echo-demo.jar -Dhttpport=8131 com.dyyx.temporal.demo.echo.EchoWorker 内部状态监控 http://127.0.0.1:8130/status prometheus 指标 http://127.0.0.1:8130/metrics
启动 echoclientapp nohup java -cp .:temporal-echo-demo.jar com.dyyx.temporal.demo.echo.EchoClientApp & 默认端口 8135 -Dhttpport=8136 指定端口 java -cp .:temporal-echo-demo.jar -Dhttpport=8136 com.dyyx.temporal.demo.echo.EchoClientApp 内部状态监控 http://127.0.0.1:8135/status prometheus 指标 http://127.0.0.1:8135/metrics 运行一个工作流 http://127.0.0.1:8135/submitWorkflow 模拟 工作流 执行耗时 500ms http://127.0.0.1:8135/submitWorkflow?rt=500
数据量比较大的表 temporal库 current_executions 479107 executions 479157 history_node 4548996 history_tree 479171 timer_tasks 479172 temporal_visibility 库 executions_visibility 467115
一些性能指标 压测 开始时间 2022-03-07 17:50:37 结束时间 2022-03-07 18:20:37 运行时间 1800 s 并发 10 tps 50 平均耗时 184ms 执行用例 97670 countGt100 96052 countGt200 19490 countGt500 1917 countGt1000 61 countGt100 表示响应时间大于100ms的数量 耗时百分位值 P50 154 P80 199 P90 289 P95 380 P99 587 { "50.0": "154", "60.0": "161", "65.0": "164", "70.0": "170", "75.0": "178", "80.0": "199", "85.0": "240", "90.0": "289", "91.0": "301", "93.0": "329", "95.0": "380", "96.0": "406", "97.0": "442", "98.0": "497", "99.0": "587" }
潜在的性能瓶颈及问题点 PG性能 一次工作流调度涉及 多张表的 insert update temporal-server 中心化 代理 集群部署 高可用与性能扩展
参考资料 Temporal 本地环境搭建及测试 linux手工释放cache 使用 maven-assembly-plugin 打包 fat jar

上一篇     下一篇
temporal 任务运行机制实例测试

GO获取环境变量

GO入门指南实例

prometheus metrics 格式说明

httpclient 超时设置

Borg Omega and Kubernetes