Tôi đã không hiểu điều đó vào lần đầu tiên khi tôi đọc phần giới thiệu từ https://www.nginx.com/blog/rate-limiting-nginx/ .
Bây giờ tôi chắc chắn tôi hiểu và câu trả lời của tôi cho đến nay là tốt nhất. :)
Giả sử: 10r/s
được thiết lập, khả năng tối đa của máy chủ là ví dụ 10000r/s
đó là 10r/ms
và chỉ có 1 khách hàng tại thời điểm này.
Vì vậy, đây là sự khác biệt chính giữa 10r/s per IP burst=40 nodelay
và 10r/s per IP burst=40
.
Vì https://www.nginx.com/blog/rate-limiting-nginx/ được ghi lại ( tôi thực sự khuyên bạn nên đọc bài viết trước (ngoại trừ phần Giới hạn tỷ lệ hai giai đoạn )), hành vi này khắc phục một vấn đề. Cái nào?:
Trong ví dụ của chúng tôi, gói thứ 20 trong hàng đợi chờ 2 giây để được chuyển tiếp, tại thời điểm đó, một phản hồi cho nó có thể không còn hữu ích cho khách hàng.
Kiểm tra dự thảo tôi đã thực hiện, 40th
yêu cầu nhận được phản hồi 1s
trong khi người khác 40th
nhận được phản hồi tại 4s
.
Điều này có thể tận dụng tốt nhất khả năng của máy chủ: gửi lại phản hồi nhanh nhất có thể trong khi vẫn giữ x r/s
ràng buộc cho một máy khách / IP nhất định.
Nhưng cũng có chi phí ở đây. Chi phí sẽ là:
Nếu bạn có nhiều khách hàng xếp hàng trên máy khách nói máy chủ cho phép của A
, B
và C
.
Không có nodelay
, các yêu cầu được phục vụ theo thứ tự tương tự ABCABCABC
.
Với nodelay
, thứ tự có nhiều khả năng được AAABBBCCC
.
Tôi muốn tổng hợp bài viết https://www.nginx.com/blog/rate-limiting-nginx/ tại đây.
Trên hết, cấu hình quan trọng nhất là x r/s
.
x r/s
chỉ, yêu cầu vượt quá bị từ chối ngay lập tức.
x r/s
+ burst
, yêu cầu vượt quá được xếp hàng.
1.
vs 2.
, chi phí là ở phía khách hàng, các yêu cầu được xếp hàng sẽ chiếm cơ hội cho các lần tái khám sau này sẽ có cơ hội được phục vụ.
Ví dụ: 10r/s burst=20
vs 10r/s
, 11th
yêu cầu được cho là bị từ chối ngay lập tức theo điều kiện sau, nhưng bây giờ nó được xếp hàng và sẽ được phục vụ. Các 11th
yêu cầu chiếm các 21th
cơ hội của yêu cầu.
x r/s
+ burst
+ nodelay
, đã được giải thích.
PS Phần giới hạn tỷ lệ hai giai đoạn của bài viết rất khó hiểu. Tôi không hiểu nhưng điều đó dường như không quan trọng.
Ví dụ:
Với cấu hình này, một khách hàng thực hiện một luồng yêu cầu liên tục với tốc độ 8 r / s trải nghiệm hành vi sau.
8 r / s? nghiêm túc? Có 17 yêu cầu trong vòng 3 giây được hiển thị trong hình ảnh, 17/3 = 8?