Bird
Raised Fist0
Nginxdevops~20 mins

Burst and nodelay options in Nginx - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Burst and Nodelay Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
1:30remaining
Understanding the burst option in nginx rate limiting

What does the burst option do in the nginx limit_req directive?

AAllows a client to exceed the rate limit by a specified number of requests temporarily.
BImmediately rejects requests that exceed the rate limit without delay.
CSets the maximum number of requests allowed per second.
DDisables rate limiting for burst traffic.
Attempts:
2 left
💡 Hint

Think about how nginx handles sudden spikes in requests.

🧠 Conceptual
intermediate
1:30remaining
Effect of the nodelay option in nginx rate limiting

What is the effect of adding the nodelay option to the limit_req directive in nginx?

ARequests exceeding the burst limit are delayed before processing.
BRequests within the burst limit are processed immediately without delay.
CDisables the burst option entirely.
DCauses nginx to reject all requests immediately.
Attempts:
2 left
💡 Hint

Consider how nodelay changes request handling timing.

💻 Command Output
advanced
2:00remaining
Output of nginx error log with burst and nodelay

Given this nginx configuration snippet:

limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;
limit_req zone=mylimit burst=3 nodelay;

What will the error log show if a client sends 5 requests instantly?

AOnly 1 request is accepted immediately; the rest are rejected.
BAll 5 requests are delayed and accepted without errors.
CThe first 4 requests are accepted immediately; the 5th request is rejected with 503 error.
DAll 5 requests are rejected immediately.
Attempts:
2 left
💡 Hint

Remember the burst allows extra requests beyond the rate, and nodelay processes them immediately.

❓ Troubleshoot
advanced
2:00remaining
Troubleshooting unexpected delays with burst and nodelay

An nginx server uses limit_req zone=mylimit burst=5; without nodelay. Clients report delays even when sending requests within burst limit. Why?

AThe rate limit is set too high, causing delays.
BNginx is rejecting requests instead of delaying them.
CThe burst option is ignored without nodelay, so all requests are delayed.
DRequests within burst are delayed to smooth traffic, causing perceived delays.
Attempts:
2 left
💡 Hint

Think about how nginx handles queued requests without nodelay.

✅ Best Practice
expert
2:30remaining
Choosing burst and nodelay settings for a high-traffic API

You manage a high-traffic API and want to allow short bursts of up to 10 requests without delay but reject any requests beyond that immediately. Which nginx configuration is best?

Alimit_req zone=api burst=10 nodelay;
Blimit_req zone=api burst=10;
Climit_req zone=api burst=5 nodelay;
Dlimit_req zone=api burst=10 delay=0;
Attempts:
2 left
💡 Hint

Consider how to allow bursts without delay and reject excess requests.

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