性能一直是软件系统要考虑的一大非功能性需求,也是非常影响用户的使用体验因素之一。如果一个系统功能强大,但是任何一个操作都要加载几分钟,那么这个系统最终使用的人会越来越少。
一般一个网站的响应速度在1秒以内是比较不影响用户使用体验的,如果在3~5秒,就已经算是慢的了,大于8秒很多用户都已经没有耐心去等待了。这就是很多人说的互联网8秒原则。
所以性能高真的非常重要,以下是一些关于如何提高性能的实践,会持续更新。
发现性能问题
发现性能问题的几个方式:
1.用户上报
2.压测,观察一些数据得到,例如fps等
3.利用工具来追踪性能,例如:听云,zipkin。这个就需要持续的关注结果。
找出性能瓶颈
添加一些追踪的工具来找到性能瓶颈是什么
1.zipkin 查看服务的链路,找到最耗时的服务
2.听云
解决
找到耗时比较长的接口,看里面具体是什么原因导致耗时长
例如:
-
查找数据库慢,如果是数据库导致的,可以考虑加索引,优化数据库结构,考虑是否要分库分表、读写分离(一个数据库又读又写可能会有锁,分了读写数据库的请求)
-
调用第三方接口慢,查看调用第三方的接口,看第三方系统的文档或者咨询相关人员,找到性能更好的方式。
例如加一些查询参数,可以缩减查询的内容;
同样的一个接口,用search in方式拿到的数据,可能没有直接调用明确的=来的快; -
如果性能瓶颈还是在第三方接口上,考虑缓存机制,
例如项目上把看板的价值列和泳道都缓存起来,卡片的数据是实时查询第三方系统;
什么时候清缓存? -
设置过期时间(这个目前没有做,需求上不需要)
-
数据更新的时候更新缓存
-
大部分数据更新时清除缓存
-
没有缓存的时候去第三方接口获取,然后缓存起来
优化
有一些连带操作是不影响用户使用体验的,可以考虑把这些连带操作设计成异步的,不去阻塞主进程,让用户无感知。
网友评论