Playball Logo

Command Palette

Search for a command to run...

목차 열기

12. 트러블슈팅 · 실패 시나리오

실행 중 마주칠 수 있는 문제와 대응 방법을 정리합니다.

재시도 가능 실패

런타임에서 자동으로 재시도하는 실패 유형.

실패원인자동 대응
큐 미개방 충돌 (409)서버 큐 스케줄러 지연 (정각 뒤 수 초 미개방)500ms 간격으로 최대 3분 반복 클릭, 큐 열리는 순간 자동 진입
좌석 충돌 (409)같은 좌석 동시 선택선택 해제 후 다른 좌석 재시도 (claimed_seats 반영)
챌린지 타이밍 실패인디케이터 조건 놓침1.2초 후 다음 시도 (최대 5회)
챌린지 드래그 실패마우스 위치 오차로 착지 실패재드래그 (최대 3회)
추천 결과 없음좌석 추천 모드에서 추천 카드 미수신직접 좌석 선택 모드로 폴백 (S4)
구역 선택 4xx서버 4xx 응답 (차단은 아님)S3 재진입 (챌린지 확인)

중단 조건

다음 조건에서는 에이전트가 즉시 SX(BLOCKED) 또는 SX(ABORT)로 종료됩니다.

BLOCKED (방어 차단)

조건판정 기준
HTTP 403 응답명시적 차단
챌린지 5회 재시도 모두 실패방어가 챌린지 레벨에서 차단
terminal_fail 서브 라운드 결과재시도 불가 판정
text=인증 실패 가시화구역 단계 봇 감지
BLOCKED reasonCode 응답API 응답의 명시적 차단 사유

ABORT (내부 실패)

조건판정 기준
세션 만료저장된 쿠키·토큰 무효
각 단계 타임아웃S2 큐 대기 180s 초과 등
예상치 못한 예외네트워크 오류·DOM 파싱 실패 등
추천 모드 ↔ MAP 폴백 모두 실패어느 경로로도 진행 불가

운영 중 발견된 구체적 문제와 대응

1. 큐 미개방 타이밍 불일치

관찰: 오픈 정각에 정확히 클릭했지만 서버 큐가 아직 안 열려 충돌 응답 반복.

원인: 백엔드 스케줄러가 초 단위로 정렬되지 않음. 정각 뒤 수 초까지 큐 미개방 상태 지속.

대응: 500ms 고정 주기로 최대 3분간 반복 클릭, 큐 열리는 순간 자동 진입.

2. 단일 PC 다중 에이전트 호스트 경합

관찰: 한 PC에서 에이전트 5~10개를 정각에 동시 투입하면 개별 에이전트 응답이 수 초씩 누적 지연.

원인: Chromium 프로세스 간 CPU·메모리·네트워크 경합 + 브라우저 통신 메시지 직렬 처리.

대응: 에이전트 순번별로 수 초씩 선형 지연 주입 (호스트 부하 분산 + 실전 타이밍 재현).

3. VQA 드래그 착지 실패

관찰: drag_verify_failed 결과가 전체 실패 중 다수를 차지.

원인: 드래그 중 마우스 이동 곡선 합성 과정에서 수직 방향 떨림으로 최종 위치가 목표에서 벗어남.

대응: 누른 직후 글러브 실제 위치 재확인, 24px 이상 벗어나면 재드래그 (최대 3회).

4. 장거리 이동 체감 속도 저하

관찰: 구역·좌석 버튼까지 수백 픽셀 이동 시 전 구간 곡선 합성으로 지연 누적.

원인: 자연스러움을 위해 전 경로를 곡선으로 합성하면 누적 시간이 길어짐.

대응: 숙련자 사전 위치 선점 모델 — 버튼 출현 전 타깃 예상 위치 근처로 마우스 미리 이동.

5. 스웜 내 동시 VQA 풀이 위험

관찰: 한 스웜 안 여러 에이전트가 같은 순간에 챌린지를 풀면 과민반응 우려.

원인: 서로 독립 세션임에도 "비정상적으로 동기화된 풀이 패턴"으로 보일 수 있음.

대응: 스웜 차원 동시 풀이 수 제한 (세마포어 기반 직렬화) + 에이전트별 시작 시각 jitter.

6. LLM 무의미한 구역 변경 지시

관찰: 좌석 추천 모드 에이전트(자동 배정)에게도 LLM이 구역 변경 지시를 내리는 경우.

원인: 자유로운 시스템 프롬프트는 불필요한 개입 유발.

대응: 시스템 프롬프트에 보수적 제약 명시, 집계 단에서도 자동 제외.

증상별 확인 항목

증상확인 순서
에이전트가 대기열에서 멈춤① 에이전트 JSONL의 QUEUE_RANK_POLL 이벤트 확인 ② 큐 URL 패턴 확인 ③ 서버 응답 코드 확인
챌린지 통과 후 구역 화면에서 정체CHALLENGE_PASSED 이후 이벤트 타임스탬프 확인 ② RECOMMEND_PARTY_SIZE_* 이벤트 확인
장거리 이동 후 체감 지연TRAJ_SYNTH 이벤트의 목표 vs 실측 지표 비교 ② 사전 위치 선점 동작 확인
요약 파일이 없음logs/attack/<env>/<run_id>/ 경로 확인 ② 종료 시점 로그 확인
코디네이터 결정이 반영 안 됨① 코디네이터 JSONL 로그 확인 ② 결정 시각 이후 단계 전이 이벤트 확인
좌석 충돌이 지속① 공유 점유 리스트가 갱신되는지 확인 ② PAYMENT_PAGE_REACHED 이후 다른 에이전트 excluded_seats 확인
챌린지 실패율이 높음CHALLENGE_SUB_ROUND_RESULT.result 분포 확인 ② 실패 원인별 집계

분석 도구

요약 파일 먼저 보기

logs/attack/<env>/<run_id>/summary_<swarm_id>_<ts>.txt

KPI 요약으로 전체 상황 파악.

에이전트 JSONL 타임라인

logs/attack/<env>/<run_id>/swarm_<ID>_agent<N>_<ts>.jsonl

단일 에이전트의 이벤트 타임라인을 시간순으로 확인.

스크린샷 교차 확인

logs/evidence/<run_id>/

의심스러운 시점의 UI 상태를 시각적으로 확인.

HAR 네트워크 트레이스

logs/evidence/<run_id>/trace.zip

서버 응답 상세를 확인해야 할 때.

여러 스웜 합산

scripts/summarize_logs.py logs/attack/<env>/*/swarm_*_agent*.jsonl

전체 스웜을 합산해 지표 재계산.

참조