在我的应用中使用身份验证/管理员/领域/我的现实/用户时的瓶颈
我正在运行一个脚本,该脚本在请求领域用户列表之前请求主令牌。我在紧密循环中执行此请求 100 次,并输出执行请求所需的时间。"auth/admin/realms/mine/users?first=0&max=1000"
使用本地安装的密钥斗篷泊坞窗进行测试时,单个请求需要 4.0 秒。如果我同时运行此脚本的 5 个实例,则单个请求大约需要 10 秒。如果我运行 10 个实例,它会跳到 20 秒,然后才收到回复。
因此,我在列出所有用户信息的页面上的Web应用程序中遇到了严重的瓶颈,并且想知道如何解决此问题。
我正在运行 .我的java家是..keycloak 2.5.0.Final
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-2.b15.el7_3.x86_64/jre
authorizationPersister = jpa
我的脚本:
import requests
keyCloakUrl = "http://foo.bar"
for i in range(100):
session = requests.Session()
r = session.post(
keyCloakUrl +"auth/realms/master/protocol/openid-connect/token",
data={
"grant_type":"password",
"client_id":"admin-cli",
"username":"admin",
"password":"admin"
}
)
master_token = json.loads(r.content)['access_token']
r = s.get(
keyCloakUrl + "auth/admin/realms/mine/users?first=0&max=1000",
headers={'Authorization':'Bearer '+master_token}
)
print(r.elapsed.total_seconds())
我的 dockerfile:
FROM jboss/keycloak-mysql:2.5.0.Final
ARG db2
ADD deps/ /opt/jboss/keycloak/
RUN /opt/jboss/keycloak/import_utbud_realm.sh
CMD ["-b", "0.0.0.0", "-bmanagement", "0.0.0.0", "-Djboss.socket.binding.port-offset=2"]
更新
我还尝试测量“auth/realms/master/protocol/openid-connect/token”请求的时间。这是每个请求 0.1 秒(仅运行一个脚本实例)和 0.8 秒(10 个实例运行)。