1,线上压测:在线上环境抽取一台服务器,通过模拟回放或者直接引入多倍流量做压测,计算出单台服务器最大的可承载能力。
2,限流:在实际业务中,一般的业务服务器都部署在反向代理服务器(Ngnix)后面,一般情况下,Ngnix不会成为瓶颈,后端的应用服务器会由于各种原因(IO等待时间长、数据库慢、代码自身的缺陷等)成为瓶颈,所以主要是根据应用服务器的负载情况来计算一个阀值,如果超过这个值,则拒绝新的请求。常用的限流算法有二种:
1)漏桶算法:用于控制从本节点发出请求的速率
2)令牌桶算法:用于控制从外界发送到本节点的请求的速率
漏桶算法可以控制应用服务器发送请求到其它应用服务器的速率,确保一下稳定的速率 ,用于控制回调的洪峰,针对用户洪峰更适合令牌桶算法。如果无差别拒绝请求,会影响用户体验,所以要配合一定的策略:
1)通过防刷算法,拒绝疑似攻击的请求。通过用户识别码、IP、所在区域、上网特征等方式拒绝频繁访问的用户。
2)尽量不影响已服务用户的使用体验。可以给这些用户一个令牌,记录用户一些重要操作时间,在流量不够的情况下,优先放行具备访问令牌的用户。
3)尽量保证会员的体验
3,降级,大促期间并发业务很多,可以关闭部分非核心业务,保证主流程的能力最大化。
4,全链路压测,直接在生产环境上模拟复制大规模的流量,确保流量覆盖所有环节,再配合全流程监控工具,找到瓶颈点。
领取专属 10元无门槛券
私享最新 技术干货