Keycloak commits the login INSERT with synchronous_commit off, so a crash loses whole sessions and not just refresh timestamps. Measured 4 of 153 lost, matching the default wal_writer_delay window. Two injections failed silently first: --grace-period=0 --force lets the container runtime send SIGTERM so PostgreSQL flushes and shuts down cleanly, and SIGKILL to PID 1 from inside its own namespace is ignored by the kernel. Killing a backend makes the postmaster reinitialize, which is a real crash recovery. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
20 lines
1.0 KiB
Plaintext
20 lines
1.0 KiB
Plaintext
=== [준비] 손실 측정 설계 확인 ===
|
|
LAST_SESSION_REFRESH 는 integer(초) — 200ms 손실은 보이지 않는다
|
|
created_on | integer | | not null |
|
|
last_session_refresh | integer | | not null | 0
|
|
"idx_user_session_expiration_created" btree (realm_id, offline_flag, remember_me, created_on, user_session_id, user_id)
|
|
"idx_user_session_expiration_last_refresh" btree (realm_id, offline_flag, remember_me, last_session_refresh, user_session_id, user_id)
|
|
→ 대신 행 존재 여부로 잰다. 로그인 하나 = 행 하나 = 이진 판정
|
|
|
|
전역 synchronous_commit: on
|
|
|
|
=== [1] 빠른 연속 로그인을 백그라운드로 시작 ===
|
|
루프 시작
|
|
6초 경과 — 지금까지 성공한 로그인: 0
|
|
|
|
=== [2] PostgreSQL 강제 종료 (SIGKILL) ===
|
|
종료 시각: 12:00:26.511
|
|
pod "postgres-7b474b88c8-xc2vt" force deleted from keycloak-lab namespace
|
|
삭제 반환: 12:00:26.586
|
|
클라이언트가 200 을 받은 로그인 수: 0
|