Halo 2.10.2 不同 JVM 压测

Halo 2.10.2 不同 JVM 压测

在对Halo 2.10.2进行不同JVM压测的过程中,我使用了Intel Xeon Platinum 8255C CPU、4GB内存的硬件配置,以及Docker和MySQL 8.1.0。通过Vegeta工具,对首页和文章页进行了压测,对比了openj9和hotspot两种镜像的性能表现。

压测环境

硬件配置

  • CPU: Intel(R) Xeon(R) Platinum 8255C CPU @ 2.50GHz (4核)
  • 内存: 4GB

操作系统

  • 操作系统: Debian GNU/Linux 12 (bookworm)

容器配置

Server: Docker Engine - Community
 Engine:
  Version:          24.0.7
  API version:      1.43 (minimum version 1.12)
  Go version:       go1.20.10
  Git commit:       311b9ff
  Built:            Thu Oct 26 09:08:02 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.24
  GitCommit:        61f9fd88f79f081d64d6fa3bb1a0dc71ec870523
 runc:
  Version:          1.1.9
  GitCommit:        v1.1.9-0-gccaecfc
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

数据库

  • MySQL: 8.1.0 (Docker 部署)

压测工具

  • Vegeta: 12.11.1

压测策略

压测URLs

# 首页
GET http://10.0.12.12:8090/
GET http://10.0.12.12:8090/themes/theme-earth/assets/dist/style.css?v=1.6.0
GET http://10.0.12.12:8090/themes/theme-earth/assets/dist/main.iife.js?v=1.6.0
GET http://10.0.12.12:8090/plugins/PluginSearchWidget/assets/static/search-widget.iife.js
GET http://10.0.12.12:8090/themes/theme-earth/assets/images/default-avatar.svg
GET http://10.0.12.12:8090/themes/theme-earth/assets/images/default-background.png
GET http://10.0.12.12:8090/plugins/PluginSearchWidget/assets/static/style.css
# 文章页
GET http://10.0.12.12:8090/archives/ci-cd-shi-jian-ji-yu-hua-wei-yun-devcloud
GET http://10.0.12.12:8090/themes/theme-earth/assets/dist/style.css?v=1.6.0
GET http://10.0.12.12:8090/themes/theme-earth/assets/dist/main.iife.js?v=1.6.0
GET http://10.0.12.12:8090/plugins/PluginLightGallery/assets/static/css/lightgallery.min.css
GET http://10.0.12.12:8090/plugins/PluginLightGallery/assets/static/js/lightgallery.min.js
GET http://10.0.12.12:8090/plugins/PluginHighlightJS/assets/static/styles/default.min.css
GET http://10.0.12.12:8090/plugins/PluginHighlightJS/assets/static/highlight.min.js
GET http://10.0.12.12:8090/plugins/PluginSearchWidget/assets/static/search-widget.iife.js
GET http://10.0.12.12:8090/halo-tracker.js
GET http://10.0.12.12:8090/themes/theme-earth/assets/images/default-avatar.svg
GET http://10.0.12.12:8090/plugins/PluginCommentWidget/assets/static/comment-widget.iife.js?version=1.8.0
GET http://10.0.12.12:8090/plugins/PluginSearchWidget/assets/static/style.css
GET http://10.0.12.12:8090/plugins/PluginCommentWidget/assets/static/style.css?version=1.8.0
GET http://10.0.12.12:8090/actuator/globalinfo
GET http://10.0.12.12:8090/apis/api.console.halo.run/v1alpha1/users/-
GET http://10.0.12.12:8090/apis/api.halo.run/v1alpha1/comments?group=content.halo.run&kind=Post&name=405c9241-262c-478b-83b1-c95ef162a774&page=1&size=20&version=v1alpha1
POST http://10.0.12.12:8090/apis/api.halo.run/v1alpha1/trackers/counter
Content-Type: application/json
@/root/vegeta/counter.json

压测策略说明

每次压测后,容器将被重新启动。会等待CPU使用率降至正常值,然后等待至少1分钟,然后再次开始压测。

使用的镜像

openj9:ruibaby/halo:2.10.2-openj9

hotspot:halohub/halo:2.10.2

Halo 主题及启动的插件

主题:Earth

插件

  • lightgallery.js 灯箱
  • highlight.js 代码高亮
  • 站点迁移
  • RSS
  • 应用市场
  • Sitemap
  • 搜索组件
  • 评论组件

测试前置处理

使用站点迁移工具从各大优质rss源中迁移文章200篇

测试的文章拥有多张图片与多个代码块

测试结果

10s-100qps

hotspot

Requests      [total, rate, throughput]         1000, 100.10, 87.59
Duration      [total, attack, wait]             11.417s, 9.99s, 1.427s
Latencies     [min, mean, 50, 90, 95, 99, max]  1.936ms, 370.937ms, 43.089ms, 296.51ms, 3.618s, 4.74s, 5.107s
Bytes In      [total, mean]                     67864000, 67864.00
Bytes Out     [total, mean]                     11603, 11.60
Success       [ratio]                           100.00%
Status Codes  [code:count]                      200:1000  
Error Set:

openj9

Requests      [total, rate, throughput]         1000, 100.10, 60.64
Duration      [total, attack, wait]             16.491s, 9.99s, 6.501s
Latencies     [min, mean, 50, 90, 95, 99, max]  2.733ms, 1.118s, 69.941ms, 5.119s, 9.517s, 11.285s, 12.709s
Bytes In      [total, mean]                     67864000, 67864.00
Bytes Out     [total, mean]                     11603, 11.60
Success       [ratio]                           100.00%
Status Codes  [code:count]                      200:1000  
Error Set:

10s-200qps

hotspot

Requests      [total, rate, throughput]         1999, 199.92, 93.17
Duration      [total, attack, wait]             21.455s, 9.999s, 11.456s
Latencies     [min, mean, 50, 90, 95, 99, max]  40.332ms, 3.309s, 2.161s, 9.715s, 12.452s, 15.193s, 18.528s
Bytes In      [total, mean]                     135559327, 67813.57
Bytes Out     [total, mean]                     23489, 11.75
Success       [ratio]                           100.00%
Status Codes  [code:count]                      200:1999  

openj9

Requests      [total, rate, throughput]         2000, 200.10, 60.40
Duration      [total, attack, wait]             33.111s, 9.995s, 23.116s
Latencies     [min, mean, 50, 90, 95, 99, max]  73.944ms, 4.882s, 2.811s, 15.635s, 21.857s, 26.002s, 29.572s
Bytes In      [total, mean]                     135604054, 67802.03
Bytes Out     [total, mean]                     23489, 11.74
Success       [ratio]                           100.00%
Status Codes  [code:count]                      200:2000  

10s-500qps

hotspot

Requests      [total, rate, throughput]         5000, 500.09, 116.97
Duration      [total, attack, wait]             39.541s, 9.998s, 29.542s
Latencies     [min, mean, 50, 90, 95, 99, max]  83.93ms, 14.817s, 13.988s, 28.724s, 30s, 30.001s, 30.002s
Bytes In      [total, mean]                     325536885, 65107.38
Bytes Out     [total, mean]                     58581, 11.72
Success       [ratio]                           92.50%
Status Codes  [code:count]                      0:375  200:4625  

openj9

Requests      [total, rate, throughput]         5000, 500.09, 108.43
Duration      [total, attack, wait]             39.999s, 9.998s, 30.001s
Latencies     [min, mean, 50, 90, 95, 99, max]  46.311ms, 16.159s, 14.094s, 30s, 30.001s, 30.001s, 30.01s
Bytes In      [total, mean]                     320179817, 64035.96
Bytes Out     [total, mean]                     51223, 10.24
Success       [ratio]                           86.74%
Status Codes  [code:count]                      0:663  200:4337  

60s-50qps

hotspot

Requests      [total, rate, throughput]         3000, 50.02, 50.01
Duration      [total, attack, wait]             59.984s, 59.98s, 4.444ms
Latencies     [min, mean, 50, 90, 95, 99, max]  1.101ms, 20.5ms, 6.825ms, 39.627ms, 91.104ms, 180.021ms, 1.737s
Bytes In      [total, mean]                     203317750, 67772.58
Bytes Out     [total, mean]                     35375, 11.79
Success       [ratio]                           100.00%
Status Codes  [code:count]                      200:3000  

openj9

Requests      [total, rate, throughput]         3000, 50.02, 50.01
Duration      [total, attack, wait]             59.991s, 59.981s, 10.475ms
Latencies     [min, mean, 50, 90, 95, 99, max]  1.914ms, 68.709ms, 11.285ms, 115.99ms, 200.417ms, 1.821s, 4.504s
Bytes In      [total, mean]                     203317875, 67772.62
Bytes Out     [total, mean]                     35375, 11.79
Success       [ratio]                           100.00%
Status Codes  [code:count]                      200:3000  

60s-100qps

hotspot

Requests      [total, rate, throughput]         6000, 100.02, 100.01
Duration      [total, attack, wait]             59.994s, 59.99s, 3.833ms
Latencies     [min, mean, 50, 90, 95, 99, max]  760.144µs, 15.17ms, 5.652ms, 26.923ms, 86.538ms, 122.81ms, 209.832ms
Bytes In      [total, mean]                     406635250, 67772.54
Bytes Out     [total, mean]                     70750, 11.79
Success       [ratio]                           100.00%
Status Codes  [code:count]                      200:6000  

openj9

Requests      [total, rate, throughput]         6000, 100.02, 88.73
Duration      [total, attack, wait]             1m7s, 59.99s, 6.739s
Latencies     [min, mean, 50, 90, 95, 99, max]  1.093ms, 3.25s, 36.093ms, 14.195s, 20.233s, 30s, 30.003s
Bytes In      [total, mean]                     404125771, 67354.30
Bytes Out     [total, mean]                     70750, 11.79
Success       [ratio]                           98.68%
Status Codes  [code:count]                      0:79  200:5921  

60s-200qps

hotspot

Requests      [total, rate, throughput]         12000, 200.02, 152.98
Duration      [total, attack, wait]             1m15s, 59.995s, 15.02s
Latencies     [min, mean, 50, 90, 95, 99, max]  562.5µs, 4.459s, 88.189ms, 20.631s, 28.414s, 30.001s, 30.01s
Bytes In      [total, mean]                     795863770, 66321.98
Bytes Out     [total, mean]                     141217, 11.77
Success       [ratio]                           95.63%
Status Codes  [code:count]                      0:524  200:11476  

openj9

Requests      [total, rate, throughput]         12000, 200.02, 129.60
Duration      [total, attack, wait]             1m23s, 59.995s, 22.737s
Latencies     [min, mean, 50, 90, 95, 99, max]  40.828ms, 7.661s, 2.905s, 29.984s, 30.001s, 30.001s, 30.018s
Bytes In      [total, mean]                     777085785, 64757.15
Bytes Out     [total, mean]                     128765, 10.73
Success       [ratio]                           89.35%
Status Codes  [code:count]                      0:1278  200:10722  
LICENSED UNDER CC BY-NC-SA 4.0
Comment