9/15 좀비 job 동거 수업 job 전수 목록 — 47건 · 피해 22건 · 17:32:53 임계 피해 범위 확정 촉발 요인 미확정 수정 미적용

마지막 업데이트 2026-09-17

작성일: 2026-09-17 사건일: 2026-09-15 15:08~18:13 KST 이슈 ID: 미지정 범위: apps/livekit-agent · ECS ppi-livekit-agent

결론

좀비 job AJ_CLYSMmWdT876이 생존한 15:08:03~18:12:48 동안 같은 ECS 태스크에 배정된 수업 job은 47건이다. 그중 실시간 미추종 경고(inference is slower than realtime)가 찍힌 job은 22건이고, 전부 17:32:53 이후에 몰려 있다.
동거 자체는 피해 조건이 아니다. 17:32:53 이전 동거 job 24건은 경고 0건이다. 즉 "좀비가 슬롯을 점유했다"는 사실만으로는 피해가 설명되지 않으며, 17:32경 임계를 넘긴 별도 요인은 여전히 미확정이다.
47좀비와 동거한 job
22경고가 찍힌 피해 job
2417:32:53 이전 동거 · 경고 0
1임계 이후 예외 (D85H)

이 문서는 좀비 job 슬롯 점유 원인 분석의 "미확정 — 17:32에 무엇이 임계를 넘겼나" 절을 뒷받침하는 전수 데이터다. 그 문서가 표본 3건으로 제시한 반증을 47건 전수로 확장한다.

시간순 인과

15:08:03 테스트 계정 테스트아리 job AJ_CLYSMmWdT876 시작 (워커 AW_eg5RnPhNXC2r)
→ 15:28경 세션 활동 소멸, 그러나 job은 살아 슬롯 2칸 중 1칸 계속 점유
→ 15:22~17:21 동거 job 24건 정상 (경고 0건) — 동거 조건만으로는 피해 없음
→ 16:00:41 좀비 자신만 inference is slower than realtime 누적 시작 (총 712건, 최대 161.8초)
→ 17:32:53 AJ_HLqsFCpJhmgX부터 동거 job에도 경고 발생 시작 (촉발 요인 미확정)
→ 17:32~18:12 동거 job 23건 중 22건 피해 (경고 5~40건, 최대 지연 2.6~83.6초)
→ 18:12:48 좀비 job 종료 (방치 페이지 종료, 재시작·배포 없음)
→ 18:13 이후 신규 job 경고 급감 (AJ_jHumBRHKhynN·AJ_5mBJJyaUWEmd 각 14·12건, 최대 5.9초로 회복)

"같은 워커"의 판별 근거

CloudWatch /ppi/livekit/prod/agent@logStreamECS 태스크(= 워커 프로세스) 단위다. 좀비 job의 스트림은 agent/ppi-livekit-agent/b9238a5f30f04c3a9207df1601ba88bf이고, 이 태스크가 곧 워커 AW_eg5RnPhNXC2r다.

따라서 동거 job = 같은 스트림에 기록되면서 실행 구간이 좀비의 생존 구간과 겹치는 job으로 정의했다. 워커당 동시 job 상한은 2(PPI_AGENT_MAX_JOBS_PER_WORKER)이고 좀비가 3시간 5분 동안 1칸을 계속 점유했으므로, 표의 job들은 대부분 그 순간 남은 슬롯 1칸을 쓴 job이다.

"같은 워커"는 프로세스·태스크 단위지 EC2 호스트 단위가 아니다. 같은 호스트에 다른 ECS 태스크가 함께 떠 있을 수 있으나 이 로그로는 보이지 않는다. 호스트 경합 가설은 이 데이터로 확인도 기각도 되지 않는다.

동거 job 전수 47건

slow = inference is slower than realtime 경고 건수, max = 단건 최대 누적 밀림, 합계 = 밀림 총합. 시작·종료는 해당 job의 첫·마지막 로그 시각(KST)이다.

job_id시작종료길이slowmax합계활동
AJ_rvktYDbFNnb314:48:3815:17:0428.4분tiki2e03_taka2
AJ_Z6a3KxoDTcWc15:22:1115:23:191.1분12_tiki
AJ_yT3EDD2cNEsG15:31:0815:32:171.1분newpp24_somiv1
AJ_8ffMYdSMrmCc15:35:0315:36:541.9분tiki_basic
AJ_cT6D9YR92rxz15:37:0615:38:111.1분tiki_basic
AJ_kDp82FB7CTBL15:38:5915:39:090.2분select_test
AJ_jwhsSiebhj6i15:40:2615:41:170.9분tiki_basic
AJ_TQKcvXZFsMp215:44:0115:45:161.2분newpp26_gwv2
AJ_NRRunZrc6fhr15:47:2315:47:360.2분tiki_basic
AJ_oXMCKBQJmUey15:49:2215:49:540.5분14_taerin
AJ_5KaDGH9xbQgx16:02:2616:05:473.3분newpp24_somiv2
AJ_MQwKwC6otnZV16:07:4816:15:528.1분pingpong01_HR02
AJ_kYrnhe5B2NaG16:15:5816:19:173.3분pingpong01_WJ01
AJ_RvpPNUfoenES16:20:1616:21:070.8분avatar_npp17_mom
AJ_dtgBPpgnVYoE16:21:0816:21:500.7분avatar_npp17_mom
AJ_6oNSjAZFy7fN16:25:4316:26:210.6분tiki2e03_taka2
AJ_9QBzgWfg2boz16:28:1316:29:090.9분newpp24_ijv1
AJ_F8CMK54qdBcL16:34:4716:35:360.8분tiki11_soyul
AJ_7x2YavkC2pob16:38:2616:41:303.1분tiki11_soyulB
AJ_XNHKvWFVAPMd16:45:0216:45:260.4분tiki_basic
AJ_EHfnuaqBGkNu16:46:4216:51:324.8분jiwoo_yes2
AJ_sr6BS37VeLGU17:01:4717:05:143.5분tiki_basic
AJ_Gu38t89n7Yde17:16:4417:19:553.2분taeyang_v2
AJ_hrk9G764G5z217:20:0317:21:071.1분newpp19E_ijv6
AJ_HLqsFCpJhmgX17:32:5317:33:000.1분52.6s8snewpp27_hrv2
AJ_XjELGeGKgFs417:33:2417:34:401.3분2473.2s478stiki2e02_taka1
AJ_FLNZBrD7Ztp917:34:4317:35:020.3분2016.9s102stiki2e02_taka1
AJ_iHouDibfJcc517:35:0917:35:540.8분2643.1s410stiki11_soyul
AJ_obmJY8XB7REs17:36:1717:37:441.4분2783.6s719snewpp14_ijv1
AJ_hYD9AR6Fu3Jy17:38:1217:38:590.8분1843.8s246stiki_basic
AJ_DY89oyY6RV9317:39:5317:40:380.7분2941.4s451snewpp14_granmav1
AJ_d8VDxbY7z3nf17:41:5817:42:100.2분129.4s49staeyang1_quiz
AJ_DbwmRU43kTvH17:44:2517:44:430.3분1115.1s68snewpp27_hrv2
AJ_LhfxUz3pe9P317:46:3817:46:540.3분1213.7s60staeyang1_quiz
AJ_AhHecuzT4Dzp17:47:5117:48:380.8분1444.8s207stiki2e03_taka
AJ_owgAqPYpkJXH17:48:4717:49:200.5분2230.0s240snewpp07A_HR02
AJ_DViS4K4eeum517:52:2417:52:520.5분2025.5s157stiki_basic
AJ_uXZtwvF63s4J17:55:1417:55:360.4분2819.1s222stiki2e03_rewarddoyoon
AJ_UFVPFD5CsXpT18:02:4018:03:040.4분2921.9s246sselect_test
AJ_D85H6ApFQSc718:04:0118:04:370.6분taeyang2_room
AJ_Q3fshgS3TohD18:05:4318:06:401.0분4054.1s826sselect_test
AJ_JZN4sEHoR9JH18:07:4818:08:330.8분3742.1s580s16_soyul
AJ_tWGimDSjWshJ18:09:0418:09:320.5분2824.9s247sgame_voice
AJ_NCLoWZZFHZ3918:09:4918:10:120.4분2220.9s165snewpp09_hrv1
AJ_KEYLYKEjgdoV18:10:3418:10:430.1분136.5s38spp35_twinB
AJ_5kJCYEiJA8Vs18:10:5518:11:220.5분2421.4s191staeyang2_room
AJ_Zjn9Hykn8hDz18:11:4618:12:260.7분3037.3s374s04_suho

참고 — 좀비 자신: AJ_CLYSMmWdT876 (pid 720) 15:08:03~18:12:48, 경고 712건, 최대 161.8초, 합계 19,735초. 경고 건수는 생존 시간에 비례하므로 피해 job과 직접 비교하지 않는다(분당 발생률로 정규화해야 한다).

17:32:53 임계 — 전수 데이터가 말하는 것

구간동거 job경고 발생 job비율
15:08:03 ~ 17:32:522400%
17:32:53 ~ 18:12:48232296%

확정 — 동거(슬롯 1칸 점유) 조건은 두 구간에서 동일한데 결과가 0%와 96%로 갈린다. 좀비의 존재만으로 피해를 설명할 수 없고, 17:32:53에 무언가가 바뀌었다.

미확정 — 무엇이 바뀌었는지는 이 데이터로 확정되지 않는다. 남은 후보는 기존 분석과 동일하다: 태스크 CPU 여력 소진, 좀비 프로세스의 메모리·상태 누적, 호스트 경합. 확정하려면 해당 ECS 태스크의 17:00~18:30 CPUUtilization·MemoryUtilizationMaximum 통계로 봐야 한다(Average는 태스크 10~20개에 희석된다).

예외 1건 — AJ_D85H6ApFQSc7 (18:04:01, 0.6분, 활동 taeyang2_room)
피해 구간 한복판(앞 AJ_UFVPFD5CsXpT 29건, 뒤 AJ_Q3fshgS3TohD 40건)에 있으면서 경고 0건이다. 세션 특성(발화량·활동 유형)인지 슬롯 배치 차이인지 미조사다. 임계 요인을 좁히는 단서가 될 수 있어 남겨 둔다.

수치 해석 시 주의

이 로그그룹의 경고 로그는 중복 출력되지 않는다. agent 로그 일부가 핸들러 3개로 3중 기록된다는 통념을 그대로 적용해 건수를 1/3로 나누면 3배 과소 집계가 된다. 실측: 14:00~19:30 구간 inference is slower than realtime 원본 1,231행을 (timestamp, job_id, delay)로 중복 제거해도 1,231행 그대로다. 좀비의 712건도 원본 건수가 곧 실제 경고 횟수다.

재현 쿼리

Grafana CloudWatch 데이터소스(uid P034F075C744B399F), 로그그룹 /ppi/livekit/prod/agent, 범위 2026-09-15 14:00~19:30 KST. 전용 CLI는 ppicw(~/.claude/skills/ppi-grafana-health/scripts/cloudwatch-query.py).

동거 job 전수 (job별 첫·마지막 로그)

fields @timestamp, @message
| filter @logStream = "agent/ppi-livekit-agent/b9238a5f30f04c3a9207df1601ba88bf"
| parse @message /"job_id": "(?<jid>AJ_[A-Za-z0-9]+)"/
| filter ispresent(jid)
| stats min(@timestamp) as t0, max(@timestamp) as t1, count(*) as n by jid
| sort t0 asc | limit 200

피해 job 판별 (경고 원본 · 중복 제거는 클라이언트에서)

fields @timestamp, @message
| filter @logStream = "agent/ppi-livekit-agent/b9238a5f30f04c3a9207df1601ba88bf"
| filter @message like /inference is slower than realtime/
| sort @timestamp asc | limit 2000
창 범위 함정 — agent job은 몇 시간씩 살아남는다. 사건 시각만 보면 원인 job의 시작점이 창 밖이라 좀비일수록 목록에서 사라진다. 최소 3시간 앞까지 --start를 넓힌다.

이슈 히스토리 · 주의사항

참고 자료