我们有一个大型 Java Web 应用程序,必须将散列算法切换到 Argon2id。
我们对 20 个并发登录进行了负载测试,以了解响应时间并找到正确的参数。(在生产环境中,每个服务器实例的并发登录数是原来的 3 倍)
与所选参数无关(我们确定为 $argon2id$v=19$m=31250,t=8,p=1),Argon2id 实现的响应时间高度不一致:
90% 的哈希在 < 0.5 秒内完成,然后是 10 次左右的调用,耗时 4 或 5 秒。在那个尖峰之后,它会回到 < 0.5 秒。
使用更安全的参数,峰值将达到 10 秒以上。
我的猜测是延迟是由垃圾收集引起的。我们降低了内存使用量,但问题仍然存在。
平台是 WebSphere 9,实现是:
<dependency>
<groupId>de.mkammerer</groupId>
<artifactId>argon2-jvm</artifactId>
<version>2.10.1</version>
</dependency>
那么,如何在高流量 Web 应用程序中使用 Argon2id?尝试其他实现?以某种方式调整GC?
有人在大型网络应用程序中使用过它吗?