当前位置: 首页 > 后端技术 > PHP

nginx限速不得不说的事:连接数限制技巧

时间:2023-03-29 23:33:53 PHP

nginx内置模块限速怎么用就不多说了,今天就来说说连接数和单连接限速。场景:A公司有100人,A公司只有一个公网IP。假设A公司可能有100人同时下载你的网站文件。但是,您的连接限制配置是:limit_conn_zone$binary_remote_addrzone=perip:1m;server{---limit_connperip1;limit_rate1024k;---}允许单连接,单连接最大带宽1M。这样就会有99个人请求状态为503,其他人要下载就得手动等待(nginx不会通知用户A用户下载完成,由用户B自己下载).这会导致非常差的用户体验。但是优点也很明显,带宽很快就会下降。可能有人会问,你是不是把连接数限制在一个很低的数上来闹事?不,绝对不是。前100人同时下载网站资源的情况有多大?我没有做过统计,但这种可能性极小。并且前端页面和下载资源不共享同一个域名,不会影响前端页面的访问。那么谁在使用大量连接呢?分为两类:下载工具(迅雷)。各种收购计划。同时执行多个下载任务。小明正在开心的看电视,看了一眼左边的屏幕,抓了草,带宽又满了,加油,限速,limit_conn_zone$binary_remote_addrzone=perip:1m;server{---limit_rate1024k;---}小明做了限速,好吧,我告诉你谁被限速了,当然是浏览器下载器了,360浏览器下载器不一定能限速,好吧,算算速度吧。Browser:2014KDownloader:1024*15(最大连接数)*VIPCollector:1024*连接数所以我们得到如下结论:带宽有限,同时下载同一个IP的很少,还是可以预见的事务,尽量将连接数限制得尽可能小。相反,不要限制自己。只需降低单个连接的带宽即可!要知道,你们谁会用浏览器自带的下载器来下载呢?注:本文只讨论nginx限速模块在不同业务中的限速彩蛋:偶尔发现限制连接数为1,迅雷无法高速下载。