美文网首页
Nginx并发请求过高导致请求超时的问题

Nginx并发请求过高导致请求超时的问题

作者: Liekkasz | 来源:发表于2020-07-10 09:32 被阅读0次

    一、问题

    昨晚(2020-07-09)八点左右,生产运行的APP大面积上报请求超时,无法获取数据,显示网络连接错误等。经过简单测试,发现并不是如用户所说的APP完全无法与服务器通讯,偶尔请求又能正常返回。
    登录后台后,直接查看系统连接数,发现并发数较高,等待处理的请求也很多,造成了网络阻塞;

    $ netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
    
    返回结果一般如下:
    CLOSED:无连接是活动的或正在进行
    LISTEN:服务器在等待进入呼叫
    SYN_RECV:一个连接请求已经到达,等待确认
    SYN_SENT:应用已经开始,打开一个连接
    ESTABLISHED:正常数据传输状态
    FIN_WAIT1:应用说它已经完成
    FIN_WAIT2:另一边已同意释放
    ITMED_WAIT:等待所有分组死掉
    CLOSING:两边同时尝试关闭
    TIME_WAIT:另一边已初始化一个释放
    LAST_ACK:等待所有分组死掉
    

    二、处理

    分析可能是有类似爬虫的程序在对我们的系统进行扫描。由于系统并没有特别高并发的需求(小众应用),所以没有所谓的高并发架构,但应用服务端采用的是Nginx,故决定限制一下限制客户端的访问频次和访问次数。

    ​Nginx可以通过ngx_http_limit_conn_modulengx_http_limit_req_module配置来限制ip在同一时间段的访问次数:

    ngx_http_limit_conn_module

    可以根据设定的条件来限定客户端(单一ip)的并发访问,使用limit_conn_zone和limit_conn指令。

    1、在nginx.conf里的http{}里加上如下代码:
    limit_conn_zone $binary_remote_addr zone=perip:10m;
    limit_conn_zone $server_name zone=perserver:10m;
    
    2、在需要限制并发数和下载带宽的网站配置server{}里加上如下代码:
    limit_conn perip 2;
    limit_conn perserver 20;
    limit_rate 100k;
    
    参数明下:
    $binary_remote_addr 限制同一客户端ip地址;
    $server_name                限制同一server最大并发数;
    limit_conn                  限制并发连接数;
    limit_rate                  限制下载速度;
    

    ngx_http_limit_req_module

    可以根据设定的条件来限定客户端(单一ip)的访问频率,使用limit_req_zone和limit_req指令。

    1、在nginx.conf里的http{}里加上如下代码:
    
    #定义一个名为one的limit_req_zone用来存储session,大小是10M内存,  
    #以$binary_remote_addr / $server_name 为key,限制平均每秒的请求为10个,
    #1m能存储16000个状态,rete的值必须为整数,
    limit_req_zone $binary_remote_addr zone=perip:10m rate=10r/s;
    limit_req_zone $server_name zone=perserver:10m rate=10r/s;
    
    2、在需要限制并发数和下载带宽的网站配置server{}里加上如下代码:
    limit_req zone=perip burst=5 nodelay;   #漏桶数为5个,也就是队列数,nodelay:不启用延迟.
    limit_req zone=perserver burst=10;    #限制nginx的处理速率为每秒10个
    

    相关文章

      网友评论

          本文标题:Nginx并发请求过高导致请求超时的问题

          本文链接:https://www.haomeiwen.com/subject/xvjpcktx.html