You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
아이템 파싱 시간당 가용량 상한 (전역 load shedding) #927 (전역 일일 가용량 상한). 이 이슈와 독립적이다 — 그쪽은 "우리가 하루에 몇 건까지 처리하겠다" 는 가용량 선언이라 등록 건수로 세고, 그 건이 비쌌는지는 관심사가 아니다. 이 이슈는 비용에 비례하는 정밀화라 세는 대상이 다르다
왜
#339 로 들어간 아이템 등록 한도는 등록 1건을 균일하게 1 차감하는 선불 예측 방식이다. 등록 시점엔 그 링크가 어느 경로로 풀릴지 알 수 없어 균일이 유일한 선택이었지만, 실제 소비량은 경로마다 크게 다르다.
균일 차감은 싼 경로를 과하게 깎고 비싼 경로를 덜 깎는다. 정상 사용자가 싼 사이트만 쓰는데도 한도에 닿거나, 비싼 사이트만 골라 쓰는 요청이 상대적으로 싸게 통과한다.
무엇을
파싱이 끝난 뒤 실제로 소비한 자원을 세어 정밀화한다. 등록 시점의 선불 차감(1)은 예약으로 두고, 확정 비용과의 차액을 파싱 완료 시점에 반영하는 구조다.
세는 대상:
단계를 나눈다 — 관측 먼저, 차감은 나중
바로 차감으로 넣으면 사용자가 예측할 수 없는 차단이 생긴다. 한도 10 기준으로:
사용자 입장에서는 "방금 5개 담았는데 왜 벌써 막히지" 가 된다. 자기 행동과 막힌 시점 사이에 보이지 않는 정산이 끼어서 예측이 안 된다. 실제 비용 분포를 모르는 상태에서는 이 상황이 얼마나 자주 터질지도 알 수 없다.
그래서 두 단계로 나눈다.
구현 메모
ItemQuotaGuard는 차감량을 인자로 받으므로, 거부 판정 없이 더하는 메서드 하나를 추가하면 키 구조와 창 개념은 그대로 재사용한다ItemParsingMetrics가 이미result·reason라벨을 세고 있어 관측 단계의 확장 지점이 된다선행 조건
참고