根据limit_req_zone的 nginx 文档
1 MB 区域可以保存大约 16,000 个 64 字节状态。如果区域存储耗尽,服务器将向所有进一步的请求返回 503(服务暂时不可用)错误。
我想知道这些区域如何被清除?例如,如果我们有类似的东西
limit_req_zone $binary_remote_addr zone=one:1m rate=1r/s;
Run Code Online (Sandbox Code Playgroud)
并且每天的唯一用户数超过 16000 - 这是否意味着该区域将溢出并且其他用户将开始收到针对设置位置的 503 错误?或者是否存在用户不活动的时间范围,之后用户相关区域内存将被清理?
我在这里主要关心的是设置最佳区域大小,而不存在在高负载情况下耗尽区域的风险。
应该检查它,但据我了解,区域项目的生命周期与活动连接有关。
因此,当前(同时)活动连接zone=one:1m中最多可以容纳16 K 个唯一 IP(当前活动连接总数可以超过 16 K,因为可以从同一 IP 打开一些连接)。
因此,以 mb 为单位的区域大小应 >= 来自唯一 IP 的同时连接数 / 16K。
请注意,如果用户通过 NAT 共享单个 IP(这对于苏联提供商来说相当常见),那么您将限制这群用户的请求频率,这对他们来说可能非常不方便,因此要处理这种情况,您应该设置rate = simult_users_with_same_ip r/s
| 归档时间: |
|
| 查看次数: |
2772 次 |
| 最近记录: |