クイズ: 欠けたスパンの原因の切り分け
한국어 원문으로 표시합니다.
'트레이스에 안 보인다' 는 신고를 받았을 때 가장 먼저 할 일은?
- 표본 추출 비율을 올려 두고 신고가 다시 오는지 하루 기다린다
- 요청 기록과 스팬 덤프를 요청 식별자로 대조해 몇 건이 없는지 센다
- 익스포터의 배치 크기와 큐 길이를 키워 전달 실패를 먼저 막는다
- 추적 백엔드의 보존 기간을 늘려 오래된 트레이스가 지워지지 않게 한다
표본 추출로 빠진 요청과 프로세스가 먼저 끝나 빠진 요청은 덤프에서 어떻게 갈라내는가?
- 표본에서 빠진 요청은 자식 스팬만 남으므로 자식의 수를 세어 가른다
- 프로세스가 먼저 끝난 경우에만 스팬의 상태가 ERROR 로 남아 구별된다
- 둘은 덤프에 남는 것이 같아서 없어진 요청이 로그의 어디에 있는지로 가른다
- 표본에서 빠진 요청은 트레이스 아이디가 덤프에 남으므로 그것으로 가른다
덤프에 parent_id 가 어떤 스팬의 span_id 도 아닌 자식 스팬이 있다. 이것이 가리키는 원인은?
- 부모 스팬이 끝나지 않아 익스포터에 넘어가지 못했다
- 부모 스팬이 표본에서 빠졌고 자식만 남았다
- 자식 스팬이 다른 서비스에서 온 것이라 부모가 이 덤프에 없다
- 트레이스 아이디가 중간에 바뀌어 부모와 자식이 갈라졌다
없는 요청은 한 건도 없는데 '트레이스가 반쪽' 이라는 신고가 계속 들어온다. 무엇을 세어야 하는가?
- 루트 스팬의 상태가 ERROR 인 트레이스의 수를 센다
- 스팬이 하나뿐인 트레이스에서 자식 스팬이 몇 개 빠졌는지 센다
- 익스포터가 버린 스팬의 수를 SDK 지표에서 읽어 센다
- 요청 식별자가 붙은 스팬이 하나도 없는 트레이스가 몇 개인지 센다
진단 규칙을 '끝내지 않은 스팬' 먼저, '부모 문맥 끊김' 나중으로 순서를 정하는 이유는?
- 끝내지 않은 스팬 쪽이 현장에서 더 자주 일어나므로 빨리 끝내려는 것이다
- 끝내지 않은 스팬은 식별자 없는 트레이스도 함께 만들어 내 순서를 바꾸면 뒤바뀐다
- 부모 문맥 판정이 덤프 전체를 두 번 읽어야 해서 뒤로 미루는 것이 빠르다
- 두 규칙은 서로 배타적이라 순서를 어떻게 두든 결과가 달라지지 않는다
없는 요청을 경로별과 시간대별로 나눠 세는 표를 만드는 까닭은?
- 표를 남겨 두어야 나중에 같은 신고가 올 때 감사 기록으로 쓸 수 있기 때문이다
- 경로와 시간대는 지표의 라벨이기도 해서 두 신호를 짝지을 수 있기 때문이다
- 한 축에 몰렸는지 고르게 퍼졌는지가 전역 설정과 한 경로의 코드를 갈라 주기 때문이다
- 표본 추출기가 경로와 시간대를 기준으로 버릴 요청을 고르기 때문이다