使用 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 Keycloak Authorization_code