You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by ic...@apache.org on 2024/07/13 16:21:32 UTC
(dubbo-benchmark) branch master updated: improve benchmark (#50)
This is an automated email from the ASF dual-hosted git repository.
icodening pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo-benchmark.git
The following commit(s) were added to refs/heads/master by this push:
new 943f170 improve benchmark (#50)
943f170 is described below
commit 943f1707a4f275a87d2c58a97ec025b652a17443
Author: icodening <ic...@apache.org>
AuthorDate: Sun Jul 14 00:21:26 2024 +0800
improve benchmark (#50)
---
benchmark-dashboard/README.md | 76 +++++++++++++++++++++
benchmark-dashboard/assets/image-1.png | Bin 0 -> 950740 bytes
benchmark-dashboard/assets/image-2.png | Bin 0 -> 865452 bytes
benchmark-dashboard/assets/usage-1.png | Bin 0 -> 70640 bytes
benchmark-dashboard/assets/usage-2.png | Bin 0 -> 110354 bytes
benchmark-dashboard/assets/usage-3.png | Bin 0 -> 138215 bytes
benchmark-dashboard/assets/usage-4.png | Bin 0 -> 165090 bytes
benchmark-dashboard/assets/usage-5.png | Bin 0 -> 377250 bytes
benchmark-dashboard/kubernetes/benchmark-cron.yaml | 9 ++-
.../kubernetes/benchmark-shell.yaml | 8 +--
benchmark-dashboard/kubernetes/infra.yaml | 32 ++++-----
benchmark-dashboard/kubernetes/pvc.yaml | 2 +-
12 files changed, 104 insertions(+), 23 deletions(-)
diff --git a/benchmark-dashboard/README.md b/benchmark-dashboard/README.md
new file mode 100644
index 0000000..c3291f7
--- /dev/null
+++ b/benchmark-dashboard/README.md
@@ -0,0 +1,76 @@
+# 自动化的 Dubbo 框架与协议性能基准 Benchmark 机制与平台使用手册
+
+## 环境要求
+* JDK 1.8 (执行benchmark程序)
+* Maven (构建代码)
+* ncat (用于探测端口是否开放)
+* jq (用于处理benchmark结果)
+* mycli (用于操作数据库)
+* MySQL 8(存储benchmark结果)
+* Grafana(展示benchmark结果)
+* Kubernetes (用于部署)
+
+## 目录说明
+* asserts 截图资源
+* docker 存放执行benchmark时所需的基础镜像构建Dockerfile
+* grafana 存放benchmark的grafana dashboard
+* kubernetes 存放kubernetes相关的yaml
+
+## 使用方式
+### 1. 先进入存放yaml的kubernetes目录,然后执行以下命令
+````shell
+kubectl apply -f pvc.yaml
+kubectl apply -f infra.yaml
+kubectl apply -f benchmark-shell.yaml
+kubectl apply -f benchmark-cron.yaml
+````
+### 2. 初始化mysql benchmark数据库
+> PS. 默认首次启动会自动初始化, 如果没有则可以按照以下流程初始化数据库
+
+通过以下命令找到mysql pod
+````shell
+kubectl get pod
+````
+通过以下命令进入mysql容器
+````shell
+kubectl exec -it [mysql pod] -- /bin/bash
+````
+进入mysql容器后通过以下命令连接mysql, 默认密码root
+````shell
+mysql -u root -p
+````
+导入schema.sql文件
+````shell
+use benchmark;
+source /docker-entrypoint-initdb.d/schema.sql;
+````
+
+### 3. 访问Grafana
+可通过以下命令获取Grafana的地址
+````shell
+kubectl get svc grafana
+````
+### 4. 添加mysql数据源
+
+ 然后在浏览器中输入地址,用户名密码为**admin/admin** (默认的账号密码)
+
+
+
+
+### 4. 导入benchmark dashboard
+
+
+登入Grafana后按照以下步骤导入`grafana/benchmark-dashboard.json`面板
+
+
+
+### 5. 等待kubernetes调度benchmark任务
+经过一段时间的benchmark后,便可以看到以下结果
+
+
+
+
+
+
+
+
diff --git a/benchmark-dashboard/assets/image-1.png b/benchmark-dashboard/assets/image-1.png
new file mode 100644
index 0000000..1668fad
Binary files /dev/null and b/benchmark-dashboard/assets/image-1.png differ
diff --git a/benchmark-dashboard/assets/image-2.png b/benchmark-dashboard/assets/image-2.png
new file mode 100644
index 0000000..3ecda9a
Binary files /dev/null and b/benchmark-dashboard/assets/image-2.png differ
diff --git a/benchmark-dashboard/assets/usage-1.png b/benchmark-dashboard/assets/usage-1.png
new file mode 100644
index 0000000..b60643a
Binary files /dev/null and b/benchmark-dashboard/assets/usage-1.png differ
diff --git a/benchmark-dashboard/assets/usage-2.png b/benchmark-dashboard/assets/usage-2.png
new file mode 100644
index 0000000..0eef3d8
Binary files /dev/null and b/benchmark-dashboard/assets/usage-2.png differ
diff --git a/benchmark-dashboard/assets/usage-3.png b/benchmark-dashboard/assets/usage-3.png
new file mode 100644
index 0000000..7cbcf7d
Binary files /dev/null and b/benchmark-dashboard/assets/usage-3.png differ
diff --git a/benchmark-dashboard/assets/usage-4.png b/benchmark-dashboard/assets/usage-4.png
new file mode 100644
index 0000000..7d36dc9
Binary files /dev/null and b/benchmark-dashboard/assets/usage-4.png differ
diff --git a/benchmark-dashboard/assets/usage-5.png b/benchmark-dashboard/assets/usage-5.png
new file mode 100644
index 0000000..ea50260
Binary files /dev/null and b/benchmark-dashboard/assets/usage-5.png differ
diff --git a/benchmark-dashboard/kubernetes/benchmark-cron.yaml b/benchmark-dashboard/kubernetes/benchmark-cron.yaml
index 26590eb..fe2faef 100644
--- a/benchmark-dashboard/kubernetes/benchmark-cron.yaml
+++ b/benchmark-dashboard/kubernetes/benchmark-cron.yaml
@@ -4,6 +4,7 @@ metadata:
name: cron-dubbo-fastjson2-32-benchmark-job
spec:
schedule: "20 * * * *"
+ concurrencyPolicy: Forbid
jobTemplate:
spec:
ttlSecondsAfterFinished: 300
@@ -63,8 +64,6 @@ spec:
secret:
secretName: mysql-secret
restartPolicy: Never
-
-
---
apiVersion: batch/v1
kind: CronJob
@@ -72,6 +71,7 @@ metadata:
name: cron-dubbo-hessianlite-32-benchmark-job
spec:
schedule: "20 * * * *"
+ concurrencyPolicy: Forbid
jobTemplate:
spec:
ttlSecondsAfterFinished: 300
@@ -140,6 +140,7 @@ metadata:
name: cron-grpc-benchmark-job
spec:
schedule: "20 * * * *"
+ concurrencyPolicy: Forbid
jobTemplate:
spec:
ttlSecondsAfterFinished: 300
@@ -209,6 +210,7 @@ metadata:
name: cron-spring-cloud-benchmark-job
spec:
schedule: "40 * * * *"
+ concurrencyPolicy: Forbid
jobTemplate:
spec:
ttlSecondsAfterFinished: 300
@@ -277,6 +279,7 @@ metadata:
name: cron-triple-32-benchmark-job
spec:
schedule: "40 * * * *"
+ concurrencyPolicy: Forbid
jobTemplate:
spec:
ttlSecondsAfterFinished: 300
@@ -346,6 +349,7 @@ metadata:
name: cron-dubbo-kryo-32-benchmark-job
spec:
schedule: "40 * * * *"
+ concurrencyPolicy: Forbid
jobTemplate:
spec:
ttlSecondsAfterFinished: 300
@@ -415,6 +419,7 @@ metadata:
name: cron-dubbo-pb-32-benchmark-job
spec:
schedule: "0 * * * *"
+ concurrencyPolicy: Forbid
jobTemplate:
spec:
ttlSecondsAfterFinished: 300
diff --git a/benchmark-dashboard/kubernetes/benchmark-shell.yaml b/benchmark-dashboard/kubernetes/benchmark-shell.yaml
index 1f409c9..68aa509 100644
--- a/benchmark-dashboard/kubernetes/benchmark-shell.yaml
+++ b/benchmark-dashboard/kubernetes/benchmark-shell.yaml
@@ -14,7 +14,7 @@ data:
cd ~ || exit
echo $(pwd)
echo "pull dubbo source code."
- git clone --depth 1 --single-branch --branch $BRANCH git@github.com:apache/dubbo.git || exit
+ git clone --depth 1 --single-branch --branch $BRANCH https://github.com/apache/dubbo.git || exit
REVISION=`awk '/<revision>[^<]+<\/revision>/{gsub(/<revision>|<\/revision>/,"",$1);print $1;exit;}' ./dubbo/pom.xml`
VERSION=$REVISION
echo "version=$REVISION"
@@ -28,7 +28,7 @@ data:
MINOR_VERSION=$(echo $VERSION | awk -F '.' '{print $1"."$2}')
echo "minor-version=$MINOR_VERSION"
cd ~ || exit
- git clone --depth 1 --single-branch --branch master git@github.com:apache/dubbo-benchmark.git || exit
+ git clone --depth 1 --single-branch --branch master https://github.com/apache/dubbo-benchmark.git || exit
cd ~/dubbo-benchmark || exit
bash prepare.sh $VERSION
bash benchmark.sh -m profiling ${SERVER_MODULE_NAME} &
@@ -84,7 +84,7 @@ metadata:
name: git-ssh
type: Opaque
data:
- id_ed25519: private_key_base64
- id_ed25519.pub: public_key_base64
+ id_ed25519: cHJpdmF0ZV9rZXlfYmFzZTY0
+ id_ed25519.pub: cHVibGljX2tleV9iYXNlNjQ=
known_hosts: Z2l0aHViLmNvbSBzc2gtZWQyNTUxOSBBQUFBQzNOemFDMWxaREkxTlRFNUFBQUFJT01xcW5rVnpybTBTZEc2VU9vcUtMc2FiZ0g1Qzlva1dpMGRoMmw5R0tKbApnaXRodWIuY29tIGVjZHNhLXNoYTItbmlzdHAyNTYgQUFBQUUyVmpaSE5oTFhOb1lUSXRibWx6ZEhBeU5UWUFBQUFJYm1semRIQXlOVFlBQUFCQkJFbUtTRU5qUUVlek9teGtaTXk3b3BLZ3dGQjlua3Q1WVJyWU1qTnVHNU44N3VSZ2c2Q0xyYm81d0FkVC95NnYwbUtWMFUydzBXWjJZQi8rK1Rwb2NrZz0KZ2l0aHViLmNvbSBzc2gtcnNhIEFBQUFCM056YUMxeWMyRUFBQUFEQVFBQkFBQUJnUUNqN25kTnhRb3dnY1FuanNoY0xycVBFaWlwaG50K1ZUVHZEUDZtSEJMOWoxY [...]
diff --git a/benchmark-dashboard/kubernetes/infra.yaml b/benchmark-dashboard/kubernetes/infra.yaml
index 178f49a..c3b73fd 100644
--- a/benchmark-dashboard/kubernetes/infra.yaml
+++ b/benchmark-dashboard/kubernetes/infra.yaml
@@ -8,16 +8,16 @@ data:
use benchmark;
create table benchmark_score
(
- id bigint auto_increment primary key,
- name varchar(32) not null,
- mode varchar(16) not null,
- score double not null,
- p99 double not null,
- p95 double not null,
- p90 double not null,
- method varchar(64) not null,
- benchmark_time datetime not null,
- create_time datetime not null
+ id bigint auto_increment primary key,
+ name varchar(32) not null,
+ mode varchar(16) not null,
+ score double not null,
+ p99 double not null,
+ p95 double not null,
+ p90 double not null,
+ method varchar(64) not null,
+ benchmark_time datetime not null,
+ create_time datetime not null
);
create index idx on benchmark_score (benchmark_time, method, name, mode);
---
@@ -56,7 +56,7 @@ spec:
mountPath: /var/lib/mysql
subPath: mysql
- name: init-script
- mountPath: /home/dev/schema.sql
+ mountPath: /docker-entrypoint-initdb.d/schema.sql
subPath: schema.sql
volumes:
@@ -118,14 +118,14 @@ spec:
ports:
- containerPort: 3000
volumeMounts:
- - mountPath: /var/lib/grafana/
- name: grafana-pvc
+ # - mountPath: /var/lib/grafana/
+ # name: grafana-pvc
- mountPath: /etc/grafana/
name: grafana-config
volumes:
- - name: grafana-pvc
- persistentVolumeClaim:
- claimName: benchmark
+ # - name: grafana-pvc
+ # persistentVolumeClaim:
+ # claimName: benchmark
- name: grafana-config
configMap:
name: grafana
diff --git a/benchmark-dashboard/kubernetes/pvc.yaml b/benchmark-dashboard/kubernetes/pvc.yaml
index 3d35cec..c69bff9 100644
--- a/benchmark-dashboard/kubernetes/pvc.yaml
+++ b/benchmark-dashboard/kubernetes/pvc.yaml
@@ -4,7 +4,7 @@ metadata:
name: benchmark
spec:
accessModes:
- - ReadWriteMany
+ - ReadWriteOnce
resources:
requests:
storage: 120Gi