使用 Jmeter 对 Keycloak 进行压力测试导致 100% 的 CPU 使用率

Posted

技术标签:

【中文标题】使用 Jmeter 对 Keycloak 进行压力测试导致 100% 的 CPU 使用率【英文标题】:Stress testing Keycloak with Jmeter resulted in 100% CPU usage 【发布时间】:2021-12-16 01:42:03 【问题描述】:

我有一个 Keycloak 服务器,我需要在 1000 人同时登录的情况下对其进行测试才能获得 OAuth 令牌。

enter image description here enter image description here

但是经过测试发现,只要有70多个用户同时登录,设置Keycloak的服务器的CPU使用率就会达到100%。

导致登录Keycloak服务器获取token的api响应时间较长。 1000人时甚至可以达到10-20秒。

enter image description here

我本来以为OAuth Server都会这样,但是我用Identity Server测试的时候没有这个问题。

有人有解决办法吗?非常感谢。

【问题讨论】:

解决方案:水平扩展 - 使用集群,而不是单个节点,这样您就可以将负载分散到多个节点。 【参考方案1】:

如果 CPU 是瓶颈 - 购买更多的计算能力。或者,您可以使用像 JProfiler 或 YourKit 这样的分析器工具来分析导致 CPU 使用率高的原因并修复该功能,Keycloak 源代码可在 Github 获得

另外你的“1000”人可能不完全正确,我建议看一下Active Threads Over Time监听器输出,我的期望是实际并发更少,尝试将线程组中的迭代次数设置为@987654326 @ 并让你的测试运行 10-20 分钟,更详细的解释见 JMeter Test Results: Why the Actual Users Number is Lower than Expected 文章。

【讨论】:

以上是关于使用 Jmeter 对 Keycloak 进行压力测试导致 100% 的 CPU 使用率的主要内容,如果未能解决你的问题,请参考以下文章

使用Jmeter对APP进行压力测试

使用jmeter对websocket进行压力测试

Jmeter Keycloak Authorization_code

如何使用JMeter对Apache ActiveMQ进行压力测试?

使用Jmeter 对APP进行压力测试

开发人员学Linux:使用JMeter对网站和数据库进行压力测试