根据limit_req_zone上的nginx文档
一兆字节的区域可以保持约一万六千字节的状态。 如果区域存储耗尽,服务器将返回503(服务暂时不可用)错误到所有进一步的请求。
我想知道这些区域以何种方式被清除? 例如,如果我们有这样的行为
limit_req_zone $binary_remote_addr zone=one:1m rate=1r/s;
每天的唯一用户数量超过16000个 – 这是否意味着该区域将会飞越,其他用户将开始获得设置位置的503错误? 或者是否存在用户不活动的时间段,之后将清除用户相关区域内存?
我主要关心的是设置一个最佳区域大小,而不会在高负载情况下耗尽。
它应该被检查,但据我所知,区域项目的寿命与活动连接有关。
因此zone=one:1m
在当前(同时) 活动连接当中可以容纳多达16 K的唯一IP (当前活动连接总数可能超过16 K,因为可以从同一个IP打开几个连接)。
因此,以mb为单位的区域大小应大于=来自唯一IP / 16K的同时连接的数量。
请注意 ,如果用户通过NAT共享单个IP,而这通常是针对USSR提供商的,那么您将限制一堆用户的请求频率,这对于他们来说可能非常不方便,因此要处理这种情况,您应该设置rate = simult_users_with_same_ip r / s