记一次接口调优

2021-02-24  本文已影响0人  skipper_shou

前言

前段时间,进行了一次接口调优,现进行简单记录。
需求是这样的,推出了切水果的玩法,用户切水果会爆出分数、虚拟货币,并积攒积分,积分可以兑换相应的商城积分。

需要解决的问题

切完水果之后需要将爆出的积分、虚拟货币等实时性较高的返回。初始期望是能在100个用户同时玩的情况下,每秒两次的调用,测试能保持在平均200ms的响应时长。
每次切水果需要扣除相应的虚拟货币,而且,每次切水果都跟用户之前获取的情况,平台获取的情况相关联。

解决过程

分解需求

在需求评审之后,针对实时性的问题,给出一些方案,如:

通过以上的分析,特别是第一条,可以提前让前端做出一些调整,比如怎么样比较合适合并请求多个请求,而不影响用户操作感知。
针对第三条,针对数据变化要通过redis广播通知

code review

首先,组织组内成员对相关功能进行code review,针对一些常见的问题进行发现修改。如:

压测

准备100个用户数据,通过jmeter动态入参,对接口进行压测。
先压测底层dubbo接口,jmeter支持dubbo直接压测,按照100个用户,每隔0.5秒进行调用,进行长时间压测,观察总结结果,根据结果值,查询当前接口可优化的点。
然后压测http接口,模仿真实用户调用,同时,查看房间效果。
为了更便于压测,可以在每一步大的功能点,都加入相应的日志,分析日志可以看到哪里消耗最大。ps:如果大家有开源的更好的方案,欢迎补充。

最终,测试服的压测结果稳定在200ms,基本达到要求,可投入生产。
在压测过程中,也针对用户体验也发现了问题,反馈给产品和运营,可以说一举多得。

上线

因为此功能相对独立,在上线之后,也在线上环境进行了压测,基本稳定在50ms。

总结

在此次调优过程中,经过各方的配合,对细节的排查,提出一些建设性的建议,的确基本保证了基础要求,因为某些原因,该项目虽然上线,但是还未提供给用户,后续开放,也会持续进行关注。

以上的一些调优方案,属于基础的调优方案,如果大佬能够有更好的调优方案,欢迎私聊、评论,相互提高,谢谢。

上一篇下一篇

猜你喜欢

热点阅读