服务端性能保障之流量并发控制方法

服务端性能保障之流量并发控制方法

7月底最后一个周日,我们品课学院线下性能提升班第二期算是正式开课,零基础的学员不少,有测试管理经验、多年开发或者测试经验的人员也有几位,但是各个都很上进好学,不是因为学习而学习,而是有共同理想而走在一个教室,交流探讨专业知识。他们谦虚且上进、因为他们知道做着没有累积性的工作,却期望老板替你加薪?做得久也未必能领得多,一切以实力见真章,所以他们珍惜每一堂课,认真笔记,发散性的问问题,无论功能测试、测试管理、行业知识、架构设计、软硬件知识等等,的确很考验老师的知识面和实战经验。

不同期的学生,不同阶段的学习提升中,学生问的问浅题深不一,深广度不同、天南地北都有,确实很有趣,在教学交流中也提升丰富我的知识体系,也会有碰到一些问题,我在平常工作中不会考虑那么完善,也有因知识面出现缺漏,让我课后弥补,让我逐渐完善我的管理体系和各类领域专业知识,并运用到实际项目工作中,例如第二节课就有学生问道数据库表设计中char、varchar在性能上的区别与用法、不同类型磁盘的性能影响、APP弱网测试、南方与北方无线网传输异常原因、数据库试图使用场景、并发数与在线数如何估算等等,不同的技术问答题,都有不同的论证方法,都能写成一篇技术文章。

本章介绍的是系统流量控制或者说限流,也是在课堂中一个学生问到一个问题,个人觉得值得探讨,因为该问题在2012年的时候,我曾测试过一个国有大行大型项目,该系统流程复杂、规则校验多、数据量庞大、并发用户数多且集中并发度高,客户的要求与项目运维运营技术问题,确实深有体会,加上互联网交易时代,各种APP产品铺天盖地,各种营销手段层出不穷,目的就是为了抢夺市场,抢夺用户流量,这时我们无法使用正常手段进行评估系统用户数,为了提高系统的可靠性、用户体验等,软件开发会从不同架构设计角度,非功能性设计等来完善架构的性能,这也是微服务能慢慢风靡原因之一,通过微服务架构来提高系统在高并发下的高可用性、高可靠性等。

产品需流控背景

例如各种电商APP出现,确实对于未知的市场用户数量在性能测试过程中确实很难预估将来在线用户数、注册用户数、并发用户数,甚至游客查询产品信息用户等也会对服务产生压力,这种确实很难估算,那我们如何做呢?

现在各类电商,美团、饿了吗、淘宝、JD等在应对秒杀、大促、双11、618等高并发性能压力场景下,对服务端的流控已经成为硬性架构设计指标要求,目的是为了保证系统在高压下能平稳运行起到高可用性、高可靠性作用。

其实很多对外接口服务也是一样为了防止外来请求数据高于自己预估指标,会对外服务接口设置接口限流作用。特别是微服务系统,其接口请求可能来自很多外系统调用,对于这种海量接口请求的微服务,接口限流很重要。

应对哪些指标进行流量控制呢?

我们性能测试过程涉及的性能指标有吞吐率、TPS、HPS、并发用户数这些技术性指标等都可以当作流控的指标,当然业务上的某些指标也可以,例如输入验证码的时间限制、短信验证码输入次数、机构用户限制、JSF请求限制等。

一般情况下,对请求数就是HPS进行流控比较方便,因为该值可查、可控性也高,,通过性能压力测试容易压力与定位。

场景案例介绍

下面场景案例是本人在2012年时,协助国内一家比较大型的城商行对信贷系统进行流量控制验证性测试介绍。

项目背景:

对某系统流量监控测试主要验证在开启监控工具进行稳定性测试对抓取响应超时的JSF与UCC时是否对系统内存等资源使用有影响;同时在开启流量访问数控制开关时针对系统并发一定数量的用户数访问特定的JSF、UCC是否进行功能性控制等验证性测试。

测试目的:

流控用户访问限制性测试主要侧重系统在并发一定用户数下集合访问某个业务交易点的压力情况下,在增加用户数时是否前端提示用户数访问限制信息提示。

测试策略:

    主要测试策略,在对某一个UCC请求超过一定数量时,验证是否弹出访问量超过流量开关控制最大访问提示信息。

 测试结果:

       在流量开启设置好业务交易控制场景和性能测试场景后,设置瞬间并发下操作某一个业务UCC服务请求,当超越该请求时应该提示如下信息,确保系统受流控成功。

并在压力测试过程检查内存回收情况、服务器资源资源利用率、session会话回收情况,确保此时的会话数的正确性和回收率的准确。

而在loadrunner压力测试场景中,也可以看到如下错误提示信息,说明流控在并发下功能的准确性。

以上场景是针对业务请求进行流量控制,算是业务流控、而一般微服务时代是技术接口、集群部署方式的这时流量监控可能复杂性更高,例如,对每一个接口服务的调用频度而限制、调度频率的设置等进行验证下非功能性测试。

原文地址:http://blog.51cto.com/372550/2153024

时间: 2024-11-09 05:08:34

服务端性能保障之流量并发控制方法的相关文章

PHPer都应该关注的服务端性能问题--听云Server试用笔记

很早就在用国外的NewRelic(http://www.newrelic.com/)的APM产品来监测自己网站的PHP应用性能了.无奈国外的服务从国内访问起来实在是太慢了,虽然New Relic已经上市了,但是这访问慢的问题却是一直没见好转,反而越来越严重.可能是GFW时不时抽风所致,有时候还得翻墙才能访问New Relic的报表.虽说翻墙是码农们必备的技能,但是为了看个报表查个故障都要翻墙的话实在太麻烦了.   最近非常意外地发现国内也有提供和New Relic类似服务的厂商了.听云(http

关于响应式设计与服务端性能

服务器端层 智能响应策略的最后一个选择是服务器. 服务器端功能检测和决策不是 移动网络的新鲜玩意.类似 WURFL 和Device Atlas的库在市场上有好多年,响应式设计和服务器组件的混合也众所周知.有时被称为是响应式设计和服务器端组件(RESS),有时又叫自适应设计,这 提高了响应式设计的速度和可用性,同时每一个服务器端都保持一个代码库. 很遗憾的是.这些技术这几年并没有什么突破性的发展.只能在博客和 杂志里看到一些开发者对"RESS"."响应式"."

React服务端渲染总结

欢迎吐槽 : ) 本demo地址( 前端库React+mobx+ReactRouter ):https://github.com/Penggggg/react-ssr.本文为笔者自学总结,有错误的地方恳请各位指出 O(∩_∩)O          序:前言.原因与思路.注意事项与问题.详解.       一.前言 为什么需要服务端渲染?什么情况下进行服务端渲染?笔者认为,当我们要求渲染时间尽量快.页面响应速度快时(优点),才会采用服务器渲染,并且应该“按需”对页面进行渲染 ——“首次加载/首屏”

【问底】夏俊:深入站点服务端技术(一)——站点并发的问题

url=http%3A%2F%2Fwww.csdn.net%2Farticle%2F2015-03-16%2F2824221&type=3&count=&appkey=&title=%E6%9C%AC%E6%96%87%E6%9D%A5%E8%87%AA%E6%8B%A5%E6%9C%89%E5%8D%81%E5%B9%B4IT%E4%BB%8E%E4%B8%9A%E7%BB%8F%E9%AA%8C%E3%80%81%E6%93%85%E9%95%BF%E7%BD%91%E

TYPESDK 服务端设计思路与架构之六:性能及调优初步

经过本系列前几篇文字的分析和设计,我们成功地开发出了自己的SDK服务端.在我们自己的调试环境下运行一切正常,但是当然我们不能就这样把这套SDK服务端部署上线到正式生产环境,稍有正式大型项目经验的同学应该都知道性能优化以及部署上线相关设计对于服务端项目的重要性.我们到目前为止的分析设计中,并没有考虑到这些设计.那么,针对我们SDK服务端这样的应用场景,应该着重关注哪些相关的优化和设计呢? 数据存取优化 在我们的应用场景中,需要使用到存储的场景主要在以下几个处理中: l  获取配置信息 对每个收到的

如何提高Web服务端并发效率的异步编程技术

作为一名web工程师都希望自己做的web应用能被越来越多的人使用,如果我们所做的web应用随着用户的增多而宕机了,那么越来越多的人就会变得越来越少了,为了让我们的web应用能有更多人使用,我们就得提升web应用服务端的并发能力.那么我们如何做到这点了,根据现有的并发技术我们会有如下选择: 第一个做法:为每个客户端发送给服务端的请求都开启一个线程,等请求处理完毕后该线程就被销毁掉,这种做法很直观,但是在现代的web服务器里这种做法已经很少使用了,原因是新建一个线程,销毁一个线程的开销(开销是指占用

【问底】夏俊:深入网站服务端技术(一)——网站并发的问题

摘要:本文来自拥有十年IT从业经验.擅长网站架构设计.Web前端技术以及Java企业级开发的夏俊,此文也是<关于大型网站技术演进的思考>系列文章的最新出炉内容,首发于CSDN,各位技术人员不容错过. 注:本文首发于CSDN,转载请标明出处. [编者按] 本文来自拥有十年IT从业经验.擅长网站架构设计.Web前端技术以及Java企业级开发的夏俊,此文也是<关于大型网站技术演进的思考>系列文章的最新出炉内容,首发于CSDN,各位技术人员不容错过. 以下为正文: 一. 引子 <关于

Java进阶知识点5:服务端高并发的基石 - NIO与Reactor模式以及AIO与Proactor模式

一.背景 要提升服务器的并发处理能力,通常有两大方向的思路. 1.系统架构层面.比如负载均衡.多级缓存.单元化部署等等. 2.单节点优化层面.比如修复代码级别的性能Bug.JVM参数调优.IO优化等等. 一般来说,系统架构的合理程度,决定了系统在整体性能上的伸缩性(高伸缩性,简而言之就是可以很任性,性能不行就加机器,加到性能足够为止):而单节点在性能上的优化程度,决定了单个请求的时延,以及要达到期望的性能,所需集群规模的大小.两者双管齐下,才能快速构建出性能良好的系统. 今天,我们就聊聊在单节点

服务端高并发分布式架构的演进

本文以淘宝作为例子,介绍从一百个并发到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则. 架构设计中的一些基本概念 分布式:系统中的多个模块在不同的服务器上部署,即可称为分布式系统.比如Tomcat和数据库分别部署在不同的服务器上,或者两个相同功能的Tomcat分别部署在不同的服务器上,都可以被称为分布式. 高可用:系统中部分节点失效的时候,其他节点能够接替它继续提供服务,即可认为系统具有高可用性