
目标服务:是使用 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/strong> 2023-04-25 14:15:05 +08:00 盲猜. SM2 耗时更多,大量的 HTTP 连接并发时,挂起的连接数也更多. 当前一个结束连接释放时,处理挂起的连接逻辑在 k8s/docker 底层效率不够. |
8 kaddusabagei38 2023-04-25 14:27:28 +08:00 不是想为了黑而黑,不过国密这种东西真的是一言难尽... |