nginx 限制并发访问及请求频率

0.

1.参考

【工作】Nginx限制IP并发连接数和请求数的研究

Module ngx_http_limit_conn_module

Module ngx_http_limit_req_module

漏桶算法和 NGINX 的 limit_req 模块

漏桶这个名字,其实就非常形象的描述了算法本身的原理。大家都知道,一个身上打了 n 个眼儿的桶,无论你倒进桶里的水多还是少,漏出来的水的流速也会保持稳定,这就是此算法的本质。再以 NGINX + PHP-FPM 为例,我们在 NGINX 配置里定义一个最大处理请求的速度,如果 PHP-FPM 的稳定处理速度峰值是 1000 RPS,那就在 NGINX 里定义处理请求速度最大为 1000 RPS。当 RPS 已经大于这个值的时候,多出来的请求就被 NGINX 这个桶暂时储存起来,排着队等待处理。在 NGINX 的精心照料下,PHP-FPM 会相对稳定的处理来自 NGINX 的请求,而不会出现突然暴增的请求让 PHP-FPM 处理不过来,甚至挂掉。

然而桶也有大小,NGINX 也一样,假如请求太多太多,桶都装不下了,那么桶将会把多出来的请求直接漏掉,返回 503 错误。

php-fpm 与 Nginx优化总结

最大请求数max_requests

最长执行时间request_terminate_timeout

2.vi /etc/nginx/nginx.conf

在 http{} 添加:

    ## 2017-12-18 【工作】Nginx限制IP并发连接数和请求数的研究 http://www.jiagoumi.com/work/718.html
    #调整为1,nginx -t 检查,再reload,查看 error.log
    #默认为503 Service Unavailable,由于临时的服务器维护或者过载,
    #可以429 Too Many Requests 用户在给定的时间内发送了太多的请求

    # [error] limiting connections by zone "conn_ip"
    limit_conn_zone $binary_remote_addr zone=conn_ip:10m;
    limit_conn conn_ip 10;  #如果这里设置为限制1个ip只能1个连接,log 显示 req_freq_ip 相关控制信息

    # [error] limiting connections by zone "conn_server"
    limit_conn_zone $server_name zone=conn_server:10m;
    limit_conn conn_server 1000;

    limit_req_zone  $binary_remote_addr zone=req_freq_ip:10m rate=3r/s;
    #这样相当于容量为0,都会被503,没有意义
    #limit_req zone=req_freq_ip;  #By default, the maximum burst size is equal to zero

    #超过每秒3个请求,放入最多容纳10个的缓冲区,或者理解为10个令牌?
    #超过3.x,则log显示 [warn] delaying; 超过10.x,则log显示 [error] limiting, 会被503
    limit_req zone=req_freq_ip burst=10;

    #后面加 nodelay 则未超过10.x的拿到令牌的请求不会被延迟
    #limit_req zone=req_freq_ip burst=10 nodelay;  

    limit_req_status 429;

    limit_conn_log_level error;  #info | notice | warn | error 不支持 debug

3.这里打开一个网页,实际上建立了多个连接,其中也包括连接复用。

时间: 2024-11-05 20:29:20

nginx 限制并发访问及请求频率的相关文章

nginx限制客户端请求频率,防止恶意攻击

模块: ngx_http_limit_req_module 作用: 限制客户端请求频率,防止恶意攻击 配置示例: http { limit_req_zone $binary_remote_addr zone=req_perip:50m rate=10r/s; ... server { ... location /api/ { limit_req zone=req_perip burst=50 nodelay; limit_req_status 503; } } } 说明: 区域名称为req_pe

Nginx并发访问优化

Nginx反向代理并发能力的强弱,直接影响到系统的稳定性.安装Nginx过程,默认配置并不涉及到过多的并发参数,作为产品运行,不得不考虑这些因素.Nginx作为产品运行,官方建议部署到Linux64位系统,基于该建议,本文中从系统线之上考虑Nginx的并发优化. 1.打开Linux系统epoll支持 epoll支持,能够大大提高系统网络IO的并发数. 2.Linux文件句柄数限制 Nginx代理过程,将业务服务器请求数据缓存到本地文件,再将文件数据转发给请求客户端.高并发的客户端请求,必然要求服

Nginx优化_访问并发量(进程可以打开的最大文件数量)

如果客户端访问服务器提示“Too many open files”如何解决? [[email protected] ~]# ab -n 2000 -c 2000 http://192.168.1.100/    #高并发访问Nginx代理的网站,提示打开文件数量过多 Benchmarking 192.168.1.100 (be patient) socket: Too many open files (24) 优化步骤: 1.  调整Nginx的主配置文件,增加并发量. [[email prot

nginx高并发优化

nginx 高并发优化 一.关闭系统中不需要的服务 二.优化磁盘写操作 mount -o remount defaults,noatime,nodiratime partion mount_partion fstab 将partion mount_partion defaults 0 0 修改为partion mount_partion defaults,noatime,nodiratime 0 0 即修改为写入磁盘不修改访问时间 三.优化资源限制 ulimit -n 和ulimit -u 即o

nginx+tomcat+memcached网页动态请求分配的安装与配置

 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选. Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memc

ql Server 高频,高并发访问中的键查找死锁解析

死锁对于DBA或是数据库开发人员而言并不陌生,它的引发多种多样,一般而言,数据库应用的开发者在设计时都会有一定的考量进而尽量避免死锁的产生.但有时因为一些特殊应用场景如高频查询,高并发查询下由于数据库设计的潜在问题,一些不易捕捉的死锁可能出现从而影响业务.这里为大家介绍由于设计问题引起的键查找死锁及相关的解决办法. 这里我们在测试的同时开启trace profiler跟踪死锁视图(locks:deadlock graph).(当然也可以开启跟踪标记,或者应用扩展事件(xevents)等捕捉死锁)

redisb并发访问慢出现的问题

最近项目一上线,就问题颇多,本地测试,ok,上线后,大用户量的时候,顶不住.用了一个礼拜的时间发现的问题,总结下来. 项目是netty4.0,reids2.8,nginx等框架.目前是4台proxy服务器,一台核心服务器,reids只部署在核心服务器上,各代理服务器共享redis数据. 当大量用户访问自己距离较近的proxy服务器时,proxy同时请求核心服务器,并发量到1w时,经常请求卡死,网页请求不回来,开始从netty的http处理并发下手,各种netty的官网,netty的优化,和配置,

nginx 通过配置抵御不合法请求

目录[-] ngx_http_limit_conn_module模块 ngx_http_limit_conn_module模块 实战阶段 ngx_http_limit_conn_module模块 使用此模块主要用来限制每秒请求数量,至于依据什么条件限制是由我们来自定义的.官方文档 Module ngx_http_limit_req_module中文翻译的 nginx限制请求数ngx_http_limit_req_module模块 文档讲的很详细了,大致说下:limit_req_zone $var

[转]高并发访问下避免对象缓存失效引发Dogpile效应

避免Redis/Memcached缓存失效引发Dogpile效应 Redis/Memcached高并发访问下的缓存失效时可能产生Dogpile效应(Cache Stampede效应). 推荐阅读:高并发下的 Nginx 优化方案 http://www.linuxidc.com/Linux/2013-01/78791.htm 避免Memcached缓存的Dogpile效应 Memcached的read-through cache流程:客户端读取缓存,没有的话就由客户端生成缓存.Memcached缓