ZITADEL Docs
APIsBenchmarksv4.17.1

oidc session benchmark of zitadel v4.17.1

Benchmark results of the v4.17.1 release of Zitadel.

Performance test results

MetricValue
Baselinenone
PurposeTest current performance
Test start2026-08-27 17:38:43 UTC
Test end2026-08-27 18:08:45 UTC
Test duration30min
Executed testoidc_session
k6 versionv2.1.0
VUs600
Client locationUS1
ZITADEL locationUS1
ZITADEL container specificationvCPU: 6
Memory: 6 Gi
Container min scale: 7
Container max scale: 7
ZITADEL Versionv4.17.1
ZITADEL SettingsEventstore autovacuum (new in v4.17): Enabled: true
VacuumThreshold: 1000000
AnalyzeThreshold: 1000000
Tuned for the ~4,000 events/s expected during the benchmark, per the tuning guide.
ZITADEL feature flagsEnabled: loginDefaultOrg (instance), oidcTokenExchange (system), enableBackChannelLogout (system), consoleUseV2UserApi (instance)
improvedPerformance (instance): IMPROVED_PERFORMANCE_PROJECT_GRANT, IMPROVED_PERFORMANCE_PROJECT, IMPROVED_PERFORMANCE_USER_GRANT, IMPROVED_PERFORMANCE_ORG_DOMAIN_VERIFIED
Disabled: loginV2 (explicitly false at instance), userSchema, debugOidcParentError, oidcSingleV1SessionTermination, permissionCheckV2
Captured from the instance before the run (sequence 7, set 2026-08-27 13:35:31 UTC); the same capture covers manipulate_user at 13:41 and the rest of the sweep from 14:56, so all eleven targets ran the same configuration.
This restores like-for-like comparison with the v4 pages, which ran five improvedPerformance options. The fifth, IMPROVED_PERFORMANCE_ORG_BY_ID, is reserved in the proto and no longer exists.
Databasetype: psql
version: v17.4
Database locationUS1
Database specificationvCPU: 8
memory: 32Gib
ZITADEL metrics during testCPU: p50 20%, p99 34% (peak 37%)
Memory: p50 6%, peak 12%
Instances: 7 (constant), no container startups recorded
Server-side: 1,001 req/s, latency p50 59ms / p95 2.8s / p99 3.3s
Observed errors3 of 1,767,162 requests failed (0.00%): 2x connection reset, 1x not individually logged (see k6 output). 3 of 2,355,414 checks failed (0.00%): add Session status ok (1 failed), finalize auth request status ok (2 failed)
Top 3 most expensive database queries1: Push events (eventstore.push) (3,945 s)
2: Query events by instance_id, aggregate_types, event_types, position (paged) (3,572 s)
3: Shared advisory lock on events2, taken by every push — lock wait (1,973 s)
Ranked by total accumulated execution time summed across concurrent sessions (Cloud SQL Query Insights) — not CPU time; it can exceed the wall-clock window.
Database metrics during testCPU: 92% median, 94% peak
Memory: 40%
Connections: 46
Transactions: 10,721/s
IOPS: read 1, write 1,086
CPU-saturated — the bottleneck for this target.
k6 Iterations per second326
k6 outputoutput
flowchart outcomeScale. Database CPU is the limit: 92% median against ZITADEL at 20%, with advisory lock wait only 20% of the top-5 query time. Raising the database beyond 8 vCPU is the next step, and throughput should be re-measured against the increase.

Endpoint latencies

k6 output

 TOTAL RESULTS

    checks_total.......: 2355414 1305.538291/s
    checks_succeeded...: 99.99%  2355411 out of 2355414
    checks_failed......: 0.00%   3 out of 2355414

 user defined
 authorize status ok
 login name status ok
 login shows password page
 password status ok
 password callback
 code set
 token status ok
 access token created
 id token created
 info created
 org created
 create user is status ok
 generate machine key status ok
 member added successful
 openid configuration
 access token returned
 auth request id returned
 add Session status ok
  99% 588848 / 1
 finalize auth request status ok
  99% 588846 / 2
 org removed

    CUSTOM
    login_ui_enter_login_name_duration...: min=114.02ms avg=114.02ms max=114.02ms p(50)=114.02ms p(95)=114.02ms p(99)=114.02ms
    login_ui_enter_password_duration.....: min=23.78ms  avg=23.78ms  max=23.78ms  p(50)=23.78ms  p(95)=23.78ms  p(99)=23.78ms
    login_ui_init_login_duration.........: min=14.73ms  avg=272.65ms max=4.22s    p(50)=49.2ms   p(95)=1.11s    p(99)=1.37s
    login_ui_token_duration..............: min=128.22ms avg=128.22ms max=128.22ms p(50)=128.22ms p(95)=128.22ms p(99)=128.22ms
    membership_iam_member................: min=70.51ms  avg=70.51ms  max=70.51ms  p(50)=70.51ms  p(95)=70.51ms  p(99)=70.51ms
    oidc_auth_request_finalize...........: min=27.3ms   avg=833.77ms max=9s       p(50)=97.44ms  p(95)=3.96s    p(99)=4.92s
    oidc_session_duration................: min=83ms     avg=1.83s    max=24.62s   p(50)=1.21s    p(95)=5.21s    p(99)=7.4s
    oidc_token_duration..................: min=47.51ms  avg=47.51ms  max=47.51ms  p(50)=47.51ms  p(95)=47.51ms  p(99)=47.51ms
    org_create_org_duration..............: min=82.6ms   avg=82.6ms   max=82.6ms   p(50)=82.6ms   p(95)=82.6ms   p(99)=82.6ms
    session_add_session_duration.........: min=22.85ms  avg=723.73ms max=23.09s   p(50)=79.29ms  p(95)=3.51s    p(99)=4.36s
    user_add_machine_key_duration........: min=55.76ms  avg=55.76ms  max=55.76ms  p(50)=55.76ms  p(95)=55.76ms  p(99)=55.76ms
    user_create_machine_duration.........: min=75.7ms   avg=75.7ms   max=75.7ms   p(50)=75.7ms   p(95)=75.7ms   p(99)=75.7ms

    HTTP
    http_req_duration....................: min=0s       avg=609.87ms max=23.09s   p(50)=77.47ms  p(95)=3.41s    p(99)=4.43s
      { expected_response:true }.........: min=11.94ms  avg=609.87ms max=23.09s   p(50)=77.47ms  p(95)=3.41s    p(99)=4.43s
    http_req_failed......................: 0.00%   3 out of 1767162
    http_reqs............................: 1767162 979.487113/s

    EXECUTION
    iteration_duration...................: min=83.46ms  avg=1.83s    max=24.62s   p(50)=1.21s    p(95)=5.21s    p(99)=7.4s
    iterations...........................: 588849  326.382079/s
    vus..................................: 13      min=0            max=600
    vus_max..............................: 600     min=600          max=600

    NETWORK
    data_received........................: 1.3 GB  704 kB/s
    data_sent............................: 576 MB  319 kB/s

running (30m04.2s), 000/600 VUs, 588849 complete and 0 interrupted iterations
default [ 100% ] 600 VUs  30m0s

Was this page helpful?

On this page