调用接口pending解决方案的问题发生在项目试运行前一周左右。 一开始,我以为服务器承受不了压力,崩溃了。 然后,我们发现调用一个查询接口,然后pending,然后调用任何接口都阻止了pending。 发现问题并找到此API接口后,我们将打印接口调用时间添加到代码中,并将日志打印到云中。 令人惊讶的是,这个接口被调用后,有开始时间,但无法打印结束时间。 同时也看到了Linux服务器的CPU使用率,但没有截图。 恐怕有CPU直接变慢的印象。
既然我们把这个API查询接口定位为有问题,原因很简单。 用explain写SQL语句,还是写这个语句的伙伴tsdsb浑水摸鱼,没有好好结构化,复杂度太高,接口直接扎不出来了。
解决方案1 .当时项目正在试运行,最简单的解决方案是直接在数据库中放置my.cnf,设置sql语句的最大查询时间,超过后向他报告错误。
2 .后期对所有前端代码,在路由切换时取消pending,避免在一个界面上拖动一切。
3 .还是写代码是优化速度,增加过滤条件。
结语已经测试了所有接口,但测试库中没有那么多测试记录来测试性能。 另外,确实设计数据库是因为做了太多的多式联运表查询,我们的学生项目团队太年轻了。 代码复杂度高、执行效率低也是外行写代码的共同点。 所以写代码要注意复杂性,多优化代码的执行速度和效率。