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.这里打开一个网页,实际上建立了多个连接,其中也包括连接复用。

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

  1. php-cgi和php-fpm,Windows环境下解决Nginx+php并发访问阻塞问题。

    php-cgi 是运行php,php-fpm是守护php-cgi进程 nginx配置目录运行php        location  ~ \.php$        {                 ...

  2. nginx比apache处理静态文件速度快,但是nginx处理大量并发的php请求时,容易出现502错误,频率大概是多少

    首先要明确一点的是502是怎么出现的,为什么会出现502呢? 一般而言,出现502的错误是因为php-cgi连接数不够导致的.举个例子:php-cgi开10个进程,前端发20个请求,每个请求的脚本都s ...

  3. Nginx - 限制并发、限制访问速率、限制流量

    1. 前言 本文针对 Nginx 的三个模块进行配置,并证实各自的功能特点: (1)limit_conn_zone 模块  - 限制同一 IP 地址并发连接数: (2)limit_request 模块 ...

  4. nginx单个ip访问频率限制

    一.限制所有单个ip的访问频率 1.http中的配置 http { #$limit_conn_zone:限制并发连接数 limit_conn_zone $binary_remote_addr zone ...

  5. Nginx并发访问优化

    Nginx反向代理并发能力的强弱,直接影响到系统的稳定性.安装Nginx过程,默认配置并不涉及到过多的并发参数,作为产品运行,不得不考虑这些因素.Nginx作为产品运行,官方建议部署到Linux64位 ...

  6. Nginx 限制并发连接和并发请求数配置

    Nginx限制并发连接和并发请求数配置   by:授客  QQ:1033553122   测试环境 nginx-1.10.0 配置介绍 查看是否内置模块 # pwd /mnt/nginx-1.10.0 ...

  7. nginx请求频率限制模块ngx_http_limit_req_module

    模块: ngx_http_limit_req_module 作用: 限制客户端请求频率,防止恶意攻击 配置示例: http { limit_req_zone $binary_remote_addr z ...

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

    如果客户端访问服务器提示“Too many open files”如何解决? [root@proxy ~]# ab -n 2000 -c 2000 http://192.168.1.100/    # ...

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

    避免Redis/Memcached缓存失效引发Dogpile效应 Redis/Memcached高并发访问下的缓存失效时可能产生Dogpile效应(Cache Stampede效应). 推荐阅读:高并 ...

随机推荐

  1. 设计模式C++学习笔记之十八(Visitor访问者模式)

      18.1.解释 概念:表示一个作用于某对象结构中的各元素的操作.它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作. main(),客户 IVisitor,访问者接口 CBaseVis ...

  2. android studio 学习之一 安装和基本使用

    一.简介 Android Studio 是一个Android集成开发工具,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开 ...

  3. Freeswitch 入门

    让我们从最初的运行开始,一步一步进入 FreeSWITCH 的神秘世界. 命令行参数 一般来说,FreeSWITCH 不需要任何命令行参数就可以启动,但在某些情况下,你需要以一些特殊的参数启动.在此, ...

  4. [HTTP] 基本认证的工作流程

    HTTP的基本认证涉及两个字段,一个是请求字段 Authorization: Authorization: Basic xxx 一个是响应字段 WWW-Authenticate WWW-Authent ...

  5. spring-data-redis和jedis版本对应问题

    项目中使用spring-data-redis总是出现跟jedis版本不一致的问题而导致异常. java.lang.ClassNotFoundException 下面就记录两者版本对应关系: sprin ...

  6. Protobuf3 语法指南

    目录 [−] 定义一个消息类型 指定字段类型 分配标识号 指定字段规则 添加更多消息类型 添加注释 保留标识符(Reserved) 从.proto文件生成了什么? 标量数值类型 默认值 枚举 使用其他 ...

  7. Confluence 6 管理你的 Confluence 许可证

    你的许可证能够让你在运行 Confluence 的时候在指定的时间段获得特定的支持.同时这个许可证也定义了在你 Confluence 中可以使用的用户数量. 希望快速的查看当前的许可证信息,你可以进入 ...

  8. pythonz之__new__与__init__

    new __new__是用来控制对象的生成过程,在对象生成之前 __init__是用来完善对象的 如果new方法不返回对象(return super().new(cls)),则不会调用init函数 c ...

  9. Java编制至今总结和学习报告

    日期:2018.8.19 星期日 博客期:006 说个事,本来想把博客园做一个交流平台的,可是交流度有点少...嗯...我看我还是把这个平台当作经验传授平台和自己的作品发布平台吧!Java的知识详解, ...

  10. Python1 简介及安装、基础

    Python介绍 Python是面向对象,高级语言,解释,动态和多用途编程语言.Python易于学习,而且功能强大,功能多样的脚本语言使其对应用程序开发具有吸引力. Python的语法和动态类型具有其 ...