假如说现在有一个接口,它在刚刚投产运行的时候,执行效率会特别高,但是随着用的时间越来越长,它的执行效率会变的越来越差,你觉得都有什么可能的情况,会造成这个问题,并怎么去解决它
首先这个问题很正常,因素很多,比如数据量、服务内存累积以及网站用户访问量的增大,可以从以下几个方面考虑:
1、数据库瓶颈:一般来说 web 应用的瓶颈很容易出现在数据库,这个时候你可以考虑加缓存、限流、数据库连接池参数调优化、数据库升级、分库分表等等。
2、应用层:服务层的性能一般也会受限于数据库的间接影响,另外还有内存啊等,视情况你可以进行 tomcat 调优、jvm 调优、缓存、增加服务实例数量等等;另外,业务服务拆分也是一种手段。
3、缓存:这是非常重要的,一旦访问量级和并发上来之后,如果完全依赖数据库,处理会被拖慢,响应自然就变长了。
4、BUG:单纯是服务运行太长时间了,变得卡顿。就像电脑长时间不关机会越来越卡,因为代码等导致的内存泄漏,占用内存无法释放,也是有可能的。
很多问题都是长期累加,可能要到一定量级才会出现,你会看到网站都是从简单慢慢到复杂,大部分原因都是量上来了,各种预防、优化措施。所以,提前做好监控和评估。
发表一点拙劣的看法