目标服务:是使用 java -jar 启动的 http 服务
对比的双方是:a.在 k8s 里启动该 http 服务(宿主机 ip+nodeport 访问,实例数量只有 1 个) 和 b.在 k8s 宿主机上直接使用 java -jar 启动 http 服务
限制:没有任何资源限制
1 、第一轮对比测试:空接口
a.TPS=58000
b.TPS=62000
k8s 环境性能损耗不到 10%
2 、第二轮对比测试:SM2 加密
a.TPS=550
b.TPS=1200
k8s 环境性能损耗 55%
3 、第三轮对比测试:生成 RSA 密钥对
a.TPS=550
b.TPS=635
k8s 环境性能损耗 13%
1 和 3 的的结果还算符合预期,但是 2 的性能损耗高达 55%,测试好几遍都是这个结果,完全出乎意料之外,不知道怎么解释这个结果,求大佬解惑~~~
1
dazhangpan 2023-04-24 20:18:05 +08:00
可能容器里没识别出 SM2 的加速指令吧
|
2
victorc 2023-04-24 23:26:39 +08:00
sm2 过程是否要写文件,容器的 fs 都有 cow 机制
|
3
seers 2023-04-24 23:36:41 +08:00
啥也没有让人怎么看。。日志,dump ,火焰图,给个 top 也行啊
|
5
crsmk01 2023-04-25 09:57:26 +08:00
这个结果有失偏颇,要限制一下 jvm 堆内存那些参数,pod 的 request 、limit cpu/mem 也限制一下,再去测试验证。
|
6
ruanimal 2023-04-25 10:28:25 +08:00
是不是代码有用到多核加速?
|
7
urnoob 2023-04-25 14:15:05 +08:00
盲猜.
SM2 耗时更多,大量的 HTTP 连接并发时,挂起的连接数也更多. 当前一个结束连接释放时,处理挂起的连接逻辑在 k8s/docker 底层效率不够. |
8
kaddusabagei38 2023-04-25 14:27:28 +08:00
不是想为了黑而黑,不过国密这种东西真的是一言难尽...
|