초당 10번의 요청을 허용했지만 이건 엄밀히 따지면 0.1초당 1번의 요청을 허용한다.
그래서 이렇게 한번에 여러개의 요청이 오는 경우 429가 발생한다.
엔진엑스의 access.log를 보면 동일한 시간대에 요청이 한번에 몰려오는 걸 볼 수 있다.
이러한 문제를 해결하려면 NGINX의 burst 기능을 이용해야 한다.
Rate Limiting with NGINX여기에 설정방법이 나와있다.
하지만, 이렇게 하면 속도의 문제가 발생한다.
burst를 20으로 했다고 해보자. 그러면 mylimit:10m rate=10r/s;이 경우에는 대기열에서 20번째 패킷이 전송되는데까지 2초가 걸린다.
nodelay 설정을 넣어주면
대기열에 있는 것들은 20개까지 받고 이걸 시간간격을 두는 게 아니라 한번에 다 처리한다고 한다.