性能优化1-概述

一.性能优化概述
根据不同应用,业务场景及指标的情况下,制定要达到的性能指标。
找到性能问题,然后分析瓶颈,解决性能问题。
通常的瓶颈有:应用层代码,算法,本身应用架构,数据库层,jvm等。

常见的指标有:
吞吐量,tps,qps,响应延时。
tps,吞吐量及qps与业务指标有关。
响应延时,更加侧重客户体现上,这会影响转化率。
响应延时又分为最长延时,平均延时及最短延时。
一般最长延时及平均延时会比较关注。

之前做的一个电商项目,首页延时响应时间最长是20ms。

一天按1000万订单来算,一天24小时,则平均每秒下单tps必须在115以上。
购买还需要考虑购买时间点,不可能流量都比较平均,这部分数据就需要实际的数据分析了。
这里假设早上9点到晚上9点是高峰期,则按12小时算,则tps必须在230以上。
因为还有峰值访问,所以一般可以设置这个平均tps乘以一个系数,这里是3,则要求tps在690以上。

二.性能优化怎么做
首先是性能测试,分析瓶颈。

jmeter等可以用来压测。

如果发现下单tps不符合业务指标,就要分析性能瓶颈在哪一块了。
一般下单包含以下几个核心操作(实际还有优惠券等):
1.创建订单
2.扣产品库存
3.扣用户钱
4.更新订单状态为成功

可以看出有许多涉及很多服务。
这时如果有调用链监控,则对于性能定位就比较方便。

如果扣产品库存服务比较慢,则需要分析这个服务具体的实现。库存本身是线程竞争的资源。而本身的瓶颈在于数据库。
对于这块常见的优化是:
1.将热点产品库存分散在多个服务器,比如产品a总库存为10000,分散在2台服务器,则每台库存为5000,这样压力可以少一半。
而对于库存扣减请求需要按load banlance形式去循环扣减。

2.底层扣减库存的优化,底层不要对产品加锁再在程序层做扣减。
直接在sql层写:update product set stock=stock-[请求库存] where stock>=[请求库存]
这个方式比上面的方法少一次数据库请求。

3.更为极端的优化是库存操作在redis内存
但缺点是如果redis挂了,则会导致超卖情况,这个与具体实现有关。
还有一种比较好的做法是:
购买车阶段库存扣减从redis做,最终实现下单的时候以数据库库存为主。这个不会导致超卖。
这种对于抢购类业务场景还是有优势的,因为最终进入到数据库层下单流程的只有实际库存数的用户流量。
比如,某产品之前库存是1000,其中100件已经加入购买车,数据库库存是1000。
redis挂了,这时从数据库恢复库存,内存库存就变为:1000,而这多出来的100再被其他用户加入购买车后,最终下单会告诉用户【产品已被抢光】,并不会发生超卖。
这时实际上涉及一个在redis挂了,如何恢复库存的情况,其实可以从用户对应购买车中购买了哪些产品,来进行库存的恢复。但缺点是用户数比较大时,恢复比较慢。






Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值