2013-02-14 32 views
6

मैंNginx # ngx_http_limit_req_module: दर से अधिक होने के बाद 503 कितनी देर तक लौटा है?

limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; 

server { 
    location/{ 
     limit_req zone=one burst=5 nodelay; 
    } 

सेट कहो तो 5 सेकंड के लिए, मैं प्रति सेकंड 10 अनुरोध भेजने के

कौन सा अनुरोध 200 देखना चाहिए और इसे 503 देखना चाहिए?
क्या यह प्रत्येक 10 अनुरोधों में से पहला होगा?

या nginxबुरा उपयोगकर्ताओं लगातार भेजने अनुरोधों का ट्रैक रखने, और इस मामले में केवल 50 requets के पहले एक 200 मिलेगा करता है?

उत्तर

9

जैसा कि यह प्रलेखन में कहा गया है: http://nginx.org/en/docs/http/ngx_http_limit_req_module.html nginx "लीकी बाल्टी" एल्गोरिदम का उपयोग करता है जो नेटवर्क क्षेत्र में सरल और सुंदर आम है। , http://en.wikipedia.org/wiki/Leaky_bucket

अपने प्रश्न (rate=1r/s burst=5 nodelay) के रूप में व्यवहार में यह कुछ इस तरह होगा:: आप विकिपीडिया पर इसके बारे में पढ़ सकते हैं

 
Req.# | Time (sec) | Response 
    1   0   200 OK 
    2  0.1   200 OK 
    3  0.2   200 OK 
    4  0.3   200 OK 
    5  0.4   200 OK 
    6  0.5   200 OK 
    7  0.6   503 
    8  0.7   503 
    9  0.8   503 
    10  0.9   503 
    11  1.0   200 OK 
    12  1.1   503 
    13  1.2   503 
    14  1.3   503 
    15  1.4   503 
    16  1.5   503 
    17  1.6   503 
    18  1.7   503 
    19  1.8   503 
    20  1.9   503 
    21  2.0   200 OK 
    22  2.1   503 
    23  2.2   503 
    24  2.3   503 
    25  2.4   503 
    26  2.5   503 
    27  2.6   503 
    28  2.7   503 
    29  2.8   503 
    30  2.9   503 
    31  3.0   200 OK 
    32  3.1   503 
    33  3.2   503 
    34  3.3   503 
    35  3.4   503 
    36  3.5   503 
    37  3.6   503 
    38  3.7   503 
    39  3.8   503 
    40  3.9   503 
    41  4.0   200 OK 
    42  4.1   503 
    43  4.2   503 
    44  4.3   503 
    45  4.4   503 
    46  4.5   503 
    47  4.6   503 
    48  4.7   503 
    49  4.8   503 
    50  4.9   503 
+0

मैंने सोचा था कि 'burst' व्यर्थ था यदि' nodelay' था सेट। क्या मुझे यह गलत लगता है? – oldergod

+0

यह अर्थहीन नहीं है। 'विस्फोट' परिभाषित करता है कि ग्राहक निर्दिष्ट 'दर' से अधिक कितने अनुरोध कर सकता है। लीकी बाल्टी एल्गोरिदम के मामले में यह बाल्टी की क्षमता है। – VBart

+0

'nodelay' बस परिभाषित करता है कि इन अत्यधिक अनुरोधों में देरी होगी या नहीं। – VBart