M9: 2차 부하·장애 주입 보고서, 로드맵 M9 진행 결과
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -84,6 +84,14 @@
|
||||
- 2차 부하 테스트, 필요 시 방 단위 다중 프로세스 분산 검토.
|
||||
- (선택) 혼자 연습용 간단한 컴퓨터 상대.
|
||||
- 체스960(자체 캐슬링 구현 + perft 검증).
|
||||
- **진행 결과(2026-10-06)**: 다섯 가지 모두 완료.
|
||||
PWA(매니페스트·아이콘, 서비스 워커는 해시 파일만 저장, 오프라인 안내 페이지·띠, 홈 화면에 추가 카드).
|
||||
게임 기록 다시 보기(시드 + 행동 기록으로 서버에서 다시 돌려 각자 자기 화면만, 결과 화면·내 정보에서 열기, 모든 게임 재현 일치 테스트).
|
||||
튜토리얼(26종 모두 30초 요약 카드 3장 + 게임 중 [?] '지금 할 수 있는 것', 실제 view로 검사).
|
||||
컴퓨터 상대(22종, 실시간·대화 게임 4종 제외; 자기 화면 정보만 보고 둠, 연습 방은 비공개·기록 제외).
|
||||
체스960(체스 수 생성기 자체 구현, perft·chess.js 비교 검증, chess.js는 테스트 전용으로).
|
||||
2차 부하·장애 주입 통과(`reports/load-20261006.md`), 다중 프로세스 분산은 지금은 불필요.
|
||||
테스트 1,997개(+깊은 perft 22개 선택), E2E 전부 통과(게임 26종·오목·PWA·다시 보기·컴퓨터 상대·튜토리얼·관리자·접근성).
|
||||
|
||||
## 순서 원칙
|
||||
- 플랫폼(M1)의 안정성 기능이 먼저다. 게임은 그 위에 하나씩 얹는다.
|
||||
|
||||
35
docs/reports/load-20261006.md
Normal file
35
docs/reports/load-20261006.md
Normal file
@@ -0,0 +1,35 @@
|
||||
# 2차 부하·장애 주입 테스트 보고서 (2026-10-06, M9)
|
||||
|
||||
- 대상 커밋: 6cc3b75 (M9 합친 뒤: 다시 보기용 행동 시각 기록, 컴퓨터 상대 스케줄러, 체스 자체 수 생성기 포함)
|
||||
- 환경·도구: 1차(`load-20261004.md`)와 같음. 봇 호스트(8코어, 30GB), 서버(MemoryMax 2G)·부하 생성기 각각 별도 systemd 스코프, localhost.
|
||||
`scripts/loadtest.ts` — 방마다 오목 선수 2 + 관전자 2, 방마다 2초에 한 수.
|
||||
|
||||
## 1. 기준 부하 (docs/10-testing.md §4)
|
||||
| 항목 | 기준 | 1차(10-04) | 2차(10-06) |
|
||||
|---|---|---|---|
|
||||
| 동시 연결 | 2,000 | 2,000 | 2,000 (끝까지 유지) |
|
||||
| 진행 중 방 | 500 | 500 | 500 |
|
||||
| 초당 행동 | 250 | 248.2 | 248.5 |
|
||||
| 지연 p95 | < 50ms | 20.2ms | 19.0ms |
|
||||
| 지연 p99 | < 100ms | 37.3ms | 37.9ms |
|
||||
| 서버 CPU | < 70% (4코어 기준 2.8코어) | 0.2코어 | 0.21코어 |
|
||||
| 서버 메모리 | < 1GB | 141MB | 163MB |
|
||||
| 오류·끊김 | 0 | 0 | 거절 0, 끊김 0 |
|
||||
|
||||
## 2. 장애 주입: 부하 중 서버 SIGKILL → 재시작
|
||||
| 항목 | 결과 |
|
||||
|---|---|
|
||||
| 재연결 | 2,000/2,000 자동 재연결 |
|
||||
| 저장된 수 유실 | 0 |
|
||||
| 복구된 방 | 1,000 (진행 중 500 + 앞 측정에서 남은 방 500), 복구 실패 0 |
|
||||
| 지연(전체 60초, 재시작 구간 포함) | p95 20.7 / p99 39.7ms |
|
||||
| 서버 오류 로그 | 0 |
|
||||
|
||||
## 3. 결론
|
||||
- M9에서 늘어난 기능(행동마다 적용 시각 기록, 방마다 컴퓨터 상대 예약 확인)으로 성능이 나빠지지 않았다. 메모리만 22MB 늘었다.
|
||||
- 기준 부하에서 서버 CPU가 0.21코어로 한도의 약 8%다. **방 단위 다중 프로세스 분산은 지금은 필요 없다.**
|
||||
다시 검토할 때: 동시 연결이 1만을 넘거나, 한 프로세스 CPU가 1코어를 꾸준히 넘을 때.
|
||||
그때는 방 코드 해시로 프로세스를 나누고 앞단(Caddy)에서 `/ws?room=` 기준으로 보내는 방식부터 본다.
|
||||
|
||||
## 4. 재현 방법
|
||||
1차 보고서 4절과 같다(`PORT=4600 … LOADTEST_NO_HTTP_LIMITS=1 bun apps/server/src/index.ts`, `bun scripts/loadtest.ts --rooms 500 --spectators 2 --seconds 60 --pid <PID> [--chaos --restart-cmd …]`).
|
||||
Reference in New Issue
Block a user