ngx_http_limit_req模块无法限制请求的正确性

时间:2016-11-18 03:17:29

标签: nginx

我想在安全的并发请求下保护我的nginx服务器,所以我设置了nginx服务器(nginx 1.6.2)限制在30000 qps的配置如下:

x

但是nginx服务器只有6000 qps,我有很多限制错误。

我曾尝试阅读源代码,原因是我找到了这个(source link):

the listbox

我认为有一个错误:

  1. limit_req_zone $server_port zone=perport:10m rate=30000r/s; limit_req_status 597; limit_req zone=perport burst=0 nodelay; 为0时,379: tp = ngx_timeofday(); 380: now = (ngx_msec_t) (tp->sec * 1000 + tp->msec); ... 409: ms = (ngx_msec_int_t) (now - lr->last); 410: 411: excess = lr->excess - ctx->rate * ngx_abs(ms) / 1000 + 1000; ... 419: if ((ngx_uint_t) excess > limit->burst) { 420: return NGX_BUSY; ... 值不会影响ngx_abs(ms)无论设置为何值。
  2. 当两个请求具有相同的散列密钥并且同时到达(相同的毫秒)时。
  3. rate将为excess
  4. 如果没有设置excess,请求将为1000
  5. 原因我使用NGX_BUSY作为哈希键,或者使用并发请求的其他任何键,无论我将费率设置为burstserver_port还是30000r/s ,它没有任何意义。

    我阅读了最新的nginx(1.11.6) code,看起来没有变化。

0 个答案:

没有答案