Bird
Raised Fist0
Nginxdevops~5 mins

Burst and nodelay options in Nginx - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does the burst option do in nginx rate limiting?
The burst option allows a temporary extra number of requests to pass beyond the set rate limit. It acts like a small buffer for sudden spikes in traffic.
Click to reveal answer
beginner
Explain the nodelay option in nginx rate limiting.
The nodelay option lets requests in the burst queue pass immediately without delay. Without it, requests in the burst queue are delayed to match the rate limit.
Click to reveal answer
intermediate
How do burst and nodelay work together in nginx?
The burst option allows extra requests to queue up temporarily. The nodelay option makes those queued requests pass instantly instead of waiting, helping handle sudden traffic bursts smoothly.
Click to reveal answer
intermediate
What happens if you set burst without nodelay in nginx?
Requests above the rate limit are queued up to the burst size but are delayed to match the rate limit speed. This can cause some requests to wait before being processed.
Click to reveal answer
beginner
Give a simple nginx configuration snippet using burst and nodelay.
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=5r/s; server { location /api/ { limit_req zone=mylimit burst=10 nodelay; } }
Click to reveal answer
What does the burst option control in nginx rate limiting?
ATimeout for requests
BNumber of extra requests allowed temporarily beyond the rate limit
CMaximum number of concurrent connections
DSize of the request body
What effect does the nodelay option have when used with burst?
AAllows burst requests to pass immediately without delay
BDelays all requests to match the rate limit
CBlocks burst requests
DIncreases the rate limit permanently
If burst is set to 5 and nodelay is not used, what happens to the 6th request arriving quickly?
AIt is rejected immediately
BIt passes instantly
CIt is delayed to fit the rate limit
DIt increases the burst size
Which directive defines the rate limit zone used with burst and nodelay?
Aserver_name
Blimit_conn_zone
Cproxy_pass
Dlimit_req_zone
Why would you use burst and nodelay together?
ATo allow sudden traffic spikes without delay
BTo reject all extra requests
CTo slow down all requests
DTo increase server memory
Describe how the burst and nodelay options affect request handling in nginx rate limiting.
Think about how nginx handles sudden spikes in requests.
You got /3 concepts.
    Write a simple nginx configuration snippet that limits requests to 10 per second with a burst of 20 and uses nodelay.
    Use $binary_remote_addr for the zone key.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does the burst option do in nginx rate limiting?
      easy
      A. Processes all requests without any limit
      B. Immediately rejects extra requests beyond the limit
      C. Allows extra requests to wait in a queue before being processed
      D. Delays all requests by a fixed time

      Solution

      1. Step 1: Understand the purpose of burst

        The burst option in nginx allows extra requests that exceed the rate limit to be queued temporarily instead of being rejected immediately.
      2. Step 2: Compare with other options

        Unlike rejecting or delaying all requests, burst specifically queues extra requests to handle traffic spikes smoothly.
      3. Final Answer:

        Allows extra requests to wait in a queue before being processed -> Option C
      4. Quick Check:

        Burst = queue extra requests [OK]
      Hint: Burst queues extra requests to handle spikes smoothly [OK]
      Common Mistakes:
      • Thinking burst rejects extra requests immediately
      • Confusing burst with fixed delay
      • Assuming burst processes all requests without limit
      2. Which is the correct syntax to enable burst with 10 requests and nodelay in nginx?
      easy
      A. limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s; limit_req zone=mylimit burst=10 nodelay;
      B. limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s; limit_req zone=mylimit burst=10 delay;
      C. limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s; limit_req zone=mylimit burst=10;
      D. limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s; limit_req zone=mylimit nodelay burst=10;

      Solution

      1. Step 1: Identify correct order and keywords

        The correct syntax places burst=10 followed by nodelay without extra keywords like delay.
      2. Step 2: Validate syntax correctness

        limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s; limit_req zone=mylimit burst=10 nodelay; correctly uses limit_req_zone and limit_req directives with proper parameters and order.
      3. Final Answer:

        limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s; limit_req zone=mylimit burst=10 nodelay; -> Option A
      4. Quick Check:

        Syntax with burst=10 and nodelay = limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s; limit_req zone=mylimit burst=10 nodelay; [OK]
      Hint: Use burst=number before nodelay in limit_req [OK]
      Common Mistakes:
      • Using 'delay' instead of 'nodelay'
      • Placing nodelay before burst
      • Omitting limit_req_zone directive
      3. Given this nginx config snippet:
      limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
      limit_req zone=one burst=3 nodelay;

      What happens if 5 requests arrive instantly from the same IP?
      medium
      A. All 5 requests are processed immediately
      B. First 4 requests processed immediately, 5th rejected
      C. First request processed immediately, next 4 delayed
      D. Only 1 request processed, others rejected

      Solution

      1. Step 1: Understand rate and burst limits

        The rate is 1 request per second, burst allows 3 extra requests queued, and nodelay means queued requests run immediately.
      2. Step 2: Analyze 5 instant requests

        The first request is within rate limit, next 3 fit in burst queue and run immediately due to nodelay, the 5th exceeds burst and is rejected.
      3. Final Answer:

        First 4 requests processed immediately, 5th rejected -> Option B
      4. Quick Check:

        Burst=3 + nodelay means 4 immediate, 5th rejected [OK]
      Hint: Burst + nodelay = burst requests processed immediately [OK]
      Common Mistakes:
      • Assuming all 5 requests pass immediately
      • Thinking requests after burst are delayed, not rejected
      • Ignoring nodelay effect
      4. You configured burst=5 but your nginx still rejects extra requests immediately. What is the likely cause?
      medium
      A. You forgot to add the nodelay option
      B. The limit_req_zone directive is missing
      C. The burst value must be less than 5
      D. You need to restart nginx twice

      Solution

      1. Step 1: Check burst behavior without nodelay

        Without nodelay, burst requests are delayed, not processed immediately, but if delay is too long, clients may see rejections.
      2. Step 2: Identify missing nodelay effect

        If extra requests are rejected immediately despite burst, likely nodelay is missing, causing strict rate enforcement.
      3. Final Answer:

        You forgot to add the nodelay option -> Option A
      4. Quick Check:

        Missing nodelay causes immediate rejection despite burst [OK]
      Hint: Add nodelay to process burst requests immediately [OK]
      Common Mistakes:
      • Assuming burst alone allows immediate processing
      • Thinking burst must be less than 5
      • Believing multiple restarts fix config issues
      5. You want to handle sudden spikes of up to 20 extra requests per second without delay, but reject any beyond that. Which nginx config snippet achieves this?
      hard
      A. limit_req_zone $binary_remote_addr zone=spike:10m rate=20r/s; limit_req zone=spike burst=5 nodelay;
      B. limit_req_zone $binary_remote_addr zone=spike:10m rate=25r/s; limit_req zone=spike burst=0;
      C. limit_req_zone $binary_remote_addr zone=spike:10m rate=5r/s; limit_req zone=spike burst=0 nodelay;
      D. limit_req_zone $binary_remote_addr zone=spike:10m rate=5r/s; limit_req zone=spike burst=20 nodelay;

      Solution

      1. Step 1: Set base rate and burst for spikes

        The base rate is 5 requests per second, and burst=20 allows 20 extra requests queued.
      2. Step 2: Use nodelay to process burst immediately

        Adding nodelay ensures the burst requests are processed right away without delay.
      3. Step 3: Confirm rejection beyond burst

        Requests beyond burst=20 will be rejected, matching the requirement.
      4. Final Answer:

        limit_req_zone $binary_remote_addr zone=spike:10m rate=5r/s; limit_req zone=spike burst=20 nodelay; -> Option D
      5. Quick Check:

        Rate=5r/s + burst=20 + nodelay = limit_req_zone $binary_remote_addr zone=spike:10m rate=5r/s; limit_req zone=spike burst=20 nodelay; [OK]
      Hint: Set burst high with nodelay to handle spikes immediately [OK]
      Common Mistakes:
      • Setting burst too low for spikes
      • Omitting nodelay causing delays
      • Setting rate too high ignoring burst
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard