The forced renewal needs sudo on the host, and the host asks for a password. That blocks the injection, not the experiment — the part worth doing first was the control anyway. Control 1 — new connections, 0.2s x 900 over 180s: 900/900 = 200, zero failures. The noise floor is 0, so a single non-200 during the renewal can be attributed to the renewal. Without this the observation would have been uninterpretable, which is the mistake A-6 made calling a -41% control "no effect" and A-8 made claiming zero-downtime from 9 samples. Control 2 — the poll cannot answer the question the plan actually asked. TLS handshakes were 900/900, meaning every request is a fresh connection, so it measures "are new connections accepted", not "what happens to a request already in flight". A separate device: the 845KB admin console bundle pulled at --limit-rate 20k, holding one request open for 42 seconds. Baseline 200 / 845361 bytes / 1 connection. Monitors are running under setsid, and stop three minutes after the certificate serial changes. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
23 lines
1.3 KiB
Plaintext
23 lines
1.3 KiB
Plaintext
D-4 대조군 2 — '진행 중이던 요청' 측정 장치의 무주입 동작
|
|
수집 시각(dev): 2026-09-04T08:08:45Z UTC
|
|
|
|
왜 이 장치가 따로 필요한가
|
|
05-control 의 0.2초 폴링은 매 요청이 새 TCP 연결이다(핸드셰이크 900/900).
|
|
그래서 '새 연결을 받아주는가'는 재지만, D-4 가 묻는 '이미 진행 중이던
|
|
요청이 어떻게 되는가'는 재지 못한다. 재하려면 reload 순간에 실제로
|
|
전송 중인 요청이 있어야 한다.
|
|
|
|
장치
|
|
845KB 짜리 관리 콘솔 번들을 --limit-rate 20k 로 내려받는다.
|
|
응답을 일부러 느리게 읽어 요청을 ~42초 동안 살아 있게 만든다.
|
|
대상: https://auth.hyeonworks.com/resources/55yjq/admin/keycloak.v2/assets/main-BbID33M6.js
|
|
----------------------------------------------------------------
|
|
[대조군: 주입 없이 1회]
|
|
코드=200 받은바이트=845361 총시간=41.392198s 연결수=1 실효속도=20423B/s
|
|
기대 크기 845361 / 실제 845361 bytes
|
|
|
|
판정 기준 (주입 시 이 값들과 비교한다)
|
|
· 코드 200 + 크기 845361 = 진행 중이던 요청이 끝까지 살아남았다(graceful)
|
|
· 코드 000 또는 크기 부족 = reload 가 진행 중이던 연결을 끊었다
|
|
· 연결수 2 이상 = 중간에 끊겨 curl 이 다시 붙었다
|