当前位置:Gxlcms > 数据库问题 > PHP没有数据库连接池怎么破?PHP环境下使用Nginx ngx_http_limit_req_module模块的高负载解决方案

PHP没有数据库连接池怎么破?PHP环境下使用Nginx ngx_http_limit_req_module模块的高负载解决方案

时间:2021-07-01 10:21:17 帮助过:23人阅读

zone=limit_one:50m rate=30r/s; #定义limit_key为Key的变量名,用于后面赋值,每个Key都有自己的计数器。limit_one为zone的名称。rate表示每秒最多接受30个同时请求。 server { ...... if ( $request_uri ~* .*php.* ) { set $mp_limit_key $binary_remote_addr; #对于全部PHP首先有个默认的Key,使用客户端的IP作为Key。相当于每个客户端IP都会在zone的限制内。 } if ( $query_string ~* .*id/(\d+)\.php.* ) { set $mp_limit_key $1; #提取id后面的值作为Key。 } if ( $query_string ~* .*appid/wx(.*)\.html.* ) { set $mp_limit_key $1; #提取appid作为Key。 } limit_req zone=limit_one burst=200; #限制limit_one在此server内的漏斗容量为200。假设一个Key对应的请求数为200,那么第一秒内在处理的为30个请求,其余的170个请求在等待排队。假设一个Key对应的请求数为300,那么超出200的部分将直接返回503。 ....... } }

参考:http://www.ttlsa.com/nginx/nginx-limiting-the-number-of-requests-ngx_http_limit_req_module-module/
官方文档:http://nginx.org/en/docs/http/ngx_http_limit_req_module.html

版权声明:本文为博主原创文章,未经博主允许不得转载。

PHP没有数据库连接池怎么破?PHP环境下使用Nginx ngx_http_limit_req_module模块的高负载解决方案

标签:nginx   php   高并发   

人气教程排行