当前位置:首页 > CN2资讯 > 正文内容

服务器 流量监控 服务器流量控制

2天前CN2资讯


今天这个话题,我相信对于做互联网业务的朋友不会陌生,特别是电商或者互金领域。一碰到做大规模促销活动,访问量会有十倍乃至百倍的增加,比如现在正在做的618。做技术的童鞋都知道,每次在做大型活动前,我们都会整备物资,查漏补缺,拉标语打口号,各种活动演练,期待打一个大胜仗。但是实际上,除了‘鹅猫狗饿’这样的大厂,其他小厂的软硬件都是容易吃紧的。那么真遇到流量吃不消了,就要考虑流量控制了,硬撑的结果,只会带来更大的系统性风险。


什么是流量控制?


流量控制就是监控当前系统的流量,如果超过预设的值或者当前系统的最大承受能力,则需要拒绝掉部分请求,以实现对系统的保护。最大承受能力的值来源于平时的压力或者性能测试的结果。


流量控制的策略


流量控制一般有两种策略方案:

1. 基于流量阈值的流控:流量阈值是每台主机的流量上限,流量超过该阈值主机将进入不稳定状态。阈值提前进行设定,如果主机当前流量超过阈值,则拒绝掉一部分流量,使得实际被处理流量始终低于阈值。

基于阈值的流控是最常见的一种方案,大多数的流控也是基于此,阈值一般通过压力测试确定。但是需要提前设置阈值,而且由于现在的系统多采用分布式的方案,需要有同步的机制,保证阈值能有效的同步。


2. 基于主机状态的流控:每个接受每个请求之前先判断当前主机状态,如果主机状况不佳,则拒绝当前请求。基于主机状态的流控的好处是省去了人为控制,不过难点在于需要制定一个稳定性的标准。而且还需要大量的实验来证明标准是否足够全面,否则不会触发流量控制。所以,如果对服务的状态没有足够的了解下,设置阈值的流控是最稳妥的办法。


流量控制的执行方案


按照服务端外部和内部的流量进行分类,有两种执行方案:


1. 外部HTTP访问流控

通过Nginx或者Tengine反向代理实现,基于各种策略进行流量控制。


例如,

(1). 限制每秒请求数

涉及模块:ngx_http_limit_req_module

通过漏桶原理来限制单位时间内的请求数,一旦单位时间内请求数超过限制,就会返回 503 错误。

范例:

http { limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s; ... server { ... location ~ \.php$ { limit_req zone=one burst=5 nodelay; } } }复制代码


(2).白名单设置

http_limit_conn 和 http_limit_req 模块限制了单 IP 单位时间内的连接和请求数,但是如果 Nginx 前面有 lvs 或者 haproxy 之类的负载均衡或者反向代理,nginx 获取的都是来自负载均衡的连接或请求,这时不应该限制负载均衡的连接和请求,就需要 geo 和 map 模块设置白名单:

geo $whiteiplist { default 1; 10.11.15.1610; } map $whiteiplist$limit { 1$binary_remote_addr; 0""; }limit_req_zone $limit zone=one:10m rate=10r/s;limit_conn_zone $limit zone=addr:10m; 复制代码

2. 内部流量控制

对于内部服务的流量控制,可以考虑系统资源的使用情况,当系统资源成为瓶颈时,内部服务框架需要对消费者做限流,启动流控保护机制。对于内部流控检测的资源包括但不局限于以下系统:


CPU使用率。



内存使用率(对于Java,对应于JVM内存使用率)。



队列积压率。



当我们有明确的指标后,我们就需要制定对应的级别。不同级别拒掉的消息比例不同,这取决于资源的负载使用情况。例如当发生一级流控时,拒绝掉1/4的消息;发生二级流控时,拒绝掉1/2消息;发生三级流控时,所有的消息都被流控掉。

不同的级别有不同的流控阈值,系统上线后会提供默认的流控阈值,不同流控因子的流控阈值不同,业务上线之后通常会根据现场的实际情况做阈值调优,因此流控阈值需要支持在线修改和动态生效。

Dubbo服务框架提供服务调用入口的拦截点和切面接口,由业务实现自定义流控。也可以提供基础的流控框架,供业务实现流控条件判断、流控执行策略等,简化业务的定制工作量。


最后,讲个人的经验提示:当因为流控而拒绝请求时,务必在返回的数据中带上一个友好的提示信息,一方面能让终端用户感觉更友好,另外一方面,从技术端,我们也能明确用户之所以不能正常访问,是因为流控的原因,而不是客户端或者服务端的BUG,这是一个很大的坑。




    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/23567.html

    分享给朋友:

    “服务器 流量监控 服务器流量控制” 的相关文章

    国外常用ping工具及其使用方法

    ping工具在国外的应用 什么是ping工具?其基本功能和重要性 ping工具是一种非常实用的网络诊断工具,通过向指定的IP地址发送数据包来检测网络连接的质量。当我们在互联网上进行访问时,ping工具能够帮助我们了解网络延迟、丢包率等关键指标。这些信息对于网站运营者和普通用户来说都是极其重要的,因为...

    深入了解服务器的基本概念、分类、性能评估与优化策略

    1. 服务器的基本概念与功能 在现代计算环境中,服务器的角色不可或缺。我将服务器看作是一种高性能计算机,专门为客户机提供服务。它们是构建云计算和数据中心的核心设备。通过提供各种服务,如文件存储、数据处理和应用托管,服务器帮助企业高效运营,满足日益增长的技术需求。 服务器的特点非常明显,具有高性能、高...

    RackNerd优惠活动详解:如何享受高性价比虚拟主机和VPS折扣

    RackNerd是一家在2019年成立的美国主机商。虽然成立时间不久,它却迅速在市场上崭露头角,赢得了许多VPS用户的青睐。公司的数据中心分别位于洛杉矶、圣何塞、西雅图和纽约等地,这些地理位置的选择让它的服务在各个区域都有稳定的覆盖。从我个人的体验来说,RackNerd的性价比非常高,尤其在价格和服...

    双ISP配置:提升网络可靠性与速度的最佳解决方案

    双ISP,顾名思义,就是同时连接两个互联网服务提供商。这种配置听起来可能有点复杂,但其实它是为了确保我们在享受网络服务时能够拥有更高的可靠性和更好的体验。想象一下,当你正在进行重要的在线会议或下载一个大文件,网络突然断了,这可真让人头疼。而双ISP就能帮助我们避免这样的困境。 双ISP的基本概念是,...

    50kvm VPS主机服务:最优性价比与便捷选择

    50kvm是一个备受推崇的VPS主机服务品牌,它因其卓越的性价比和高效的速度而广受欢迎。这个品牌提供多种不同 유형的VPS解决方案,覆盖了从美国到亚洲的多个数据中心。特别是美国波特兰的Cera (NCP)和洛杉矶C3、Cera CN2 GIA等产品,都是非常值得关注的选择。 在我了解50kvm的过程...

    全面VPN测评:如何选择最适合你的虚拟私人网络服务

    VPN测评是评估虚拟私人网络(VPN)服务质量的一种方法。对我而言,了解VPN测评极为重要,因为它能帮助我做出明智的选择,以确保在使用互联网时的隐私和安全。VPN测评通常涉及多个方面,包括用户评价、性能测试和专业评测。 每个人使用VPN的需求都不尽相同,这就需要从不同的角度来分析VPN服务的优劣。用...