Skip to content

[Test] WebSocket 대시보드 권한 검증 부하 결과 기록 - #375

Merged
Gimini-3 merged 4 commits into
developfrom
test/374
Oct 1, 2026
Merged

Gimini-3 merged 4 commits into
developfrom
test/374

Conversation

@Gimini-3

@Gimini-3 Gimini-3 commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

문제 상황

머지된 #373은 관리자 역할 회수 이후 기존 STOMP 대시보드 구독자의 새 메시지를 차단합니다. 그 대신 브로커가 수신자마다 현재 primary 역할을 동기 조회하므로, 실제 전달 지연과 push 생성량에 미치는 비용을 별도로 측정·기록할 필요가 있었습니다.

이번 PR에 담은 것

  • GCP 내부 임시 백엔드·부하 VM과 OpenSQL 3노드/OpenProxy 경로에서 2026-10-01에 실행한 비교 시험의 한국어 보고서(문제·구성·명령·측정·분석·한계, 그림 5개).
  • 기존/수정 버전의 1·5·20·50개 구독 결과 JSON 12개와, 실행별 앱 메트릭 JSONL 10개를 분리한 공개 증거.
  • 당시 Python 부하 클라이언트·메트릭 수집기의 비식별 사본과, 회차 완전성·50명 중앙값·메트릭 순서·추가 근거 파일을 대조하는 표준 라이브러리 테스트 5개.
  • 50명 수정 버전의 비식별 JVM 전체 스레드 덤프(내용 1116줄, 끝 공백 정리)와 핵심 호출 스택 발췌, 내부 IP 필드를 제거한 DB 전후 스냅샷 4개, 핵심 근거 로그와 공개 전 검사 기록.

테스트 환경 (2026-10-01 실행분)

구성 요소 당시 시험 환경
백엔드 GCP 임시 VM 1대, Rocky Linux 9.8 x86_64, 2 vCPU; 단일 Spring Boot 인스턴스
부하 발생기 GCP 임시 VM 1대, Rocky Linux 9.8 x86_64, 2 vCPU; Python WebSocket 클라이언트(이 시험은 k6 아님)
데이터베이스 기존 OpenSQL DB VM 3대; 각 VM에서 Rocky Linux 9.7 x86_64 컨테이너 실행
프록시 OpenProxy 2개, DB 노드에 함께 배치(별도 프록시 VM 아님)
Redis·로드밸런서 Redis의 당시 배치 위치는 이 PR의 공개 증거만으로 확정하지 않음. 별도 내부 로드밸런서나 백엔드 A/B는 이 시험에 없음
VM 합계·사후 상태 시험 시 GCP VM 5대(백엔드 1 + 부하 1 + DB 3). 이 PR은 기존 측정 결과를 기록했으며 새 클라우드 시험을 실행하지 않음; 임시 백엔드·부하 VM은 이후 삭제됨

핵심 관측

50개 구독, 30초 관측, 버전별 3회에서 수신 지연 p95 중앙값은 기존 8.5 ms → #373 버전 2,443.7 ms였습니다. 수신 프레임 중앙값은 5,000 → 588건이었습니다. 연결 오류와 수신한 sequence의 중간 누락은 0건이지만, 동기 팬아웃이 다음 발행을 늦춰 목표한 주기만큼 push가 생성되지 않았습니다. JVM 스택 관찰, Hikari 대여 증가, 낮은 CPU·대기열 표본은 수신자별 동기 DB 확인이 병목이라는 해석을 뒷받침합니다.

검증과 범위

  • python3 -m unittest -v scripts.opensql.test_websocket_dashboard_evidence: 5/5 통과.
  • Python 구문 검사, JSON/JSONL 22개 파싱, 임시 원본과 공개본 22개 일치, DB 스냅샷 4개와 비식별 JVM 덤프 대조, git diff --cached --check 통과.
  • 공개 파일에서 내부 IP·프로젝트 ID·JWT 형태·개인 홈 경로·PEM 키 패턴을 찾지 못했습니다. 패턴 검사가 모든 비밀을 배제한다는 주장은 하지 않습니다.
  • 이번 PR에서는 새 클라우드 부하 시험을 실행하지 않았고 프로덕션 코드도 변경하지 않았습니다. 시험은 합성 publisher를 사용한 단일 백엔드 측정입니다. 임시 Java publisher/ADMIN fixture와 삭제된 VM의 앱 journal 전체는 남아 있지 않아 완전한 재실행·journal 전체 대조에는 한계가 있습니다. DB 스냅샷과 JVM 덤프는 비식별본만 공개합니다. 성능 최적화와 최적화 후 재측정은 별도 작업입니다.

Closes #374. Related: #373, #371.

@coderabbitai

coderabbitai Bot commented Oct 1, 2026 •

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: Repository: DocGrid/docgrid/.coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: 821cb22e-962b-4df8-9549-f7fc2b679e00

  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Autopilot is currently an internal CodeRabbit preview.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@Gimini-3
Gimini-3 merged commit 8903851 into develop Oct 1, 2026
1 check passed
@Gimini-3 Gimini-3 self-assigned this Oct 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Test] WebSocket 대시보드 수신 부하와 권한 검증 비용 기록

1 participant