2014-01-16 98 views
3

據nginx的文檔上limit_req_zonenginx:limit_req_zone區域如何清除?

一兆個字節的區域可以保持大約16000個64字節的狀態。如果區域存儲耗盡,服務器將返回503(服務暫時不可用)錯誤到所有其他請求。

我想知道這些區域以何種方式被清除?例如,如果我們有像

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

和獨特的用戶每一天的數量超過水木清華16000 - 這是否意味着該區域將得到溢出等用戶將開始得到503錯誤的設置位置?或者是否存在用戶不活動的時間範圍,之後清除用戶相關區域內存?

這裏我主要關心的是設置一個最佳的區域大小,而不會在高負荷情況下耗盡 。

回答

1

它應該被檢查,但據我瞭解,區域項目的壽命與活動連接有關。
所以zone=one:1m最多可容納16K的獨立IP地址目前(同時)活動連接中(此刻的活動連接的總數可以超過16 K,因爲一些連接可以從同一個IP打開) 。
因此,以mb爲單位的區域大小應大於=來自唯一IP/16K的同時連接數。

注意,如果用戶分享了這是相當往往是蘇聯供應商,那麼你將限制要求頻率爲一羣用戶,可以是對他們非常不方便,所以處理這種情況下,你的NAT單一IP應設置爲rate = simult_users_with_same_ip r/s