-
网络异常
-
死锁,比如你提供的API接口中根据id更新某条数据时,正好线上在手动执行一个批量更新数据的sql语句,该sql语句在一个事务中,并且刚好也在更新那条sql语句,可能会出现死锁的情况。由于该sql语句执行时间很长,会导致API接口的那次更新数据操作,长时间被数据库锁住,没法即使返回数据,而出现接口超时问题。
-
慢查询 sql,看看有没有慢sql,或者有时候会走错索引甚至不走索引,可以使用 force index,强制走哪条索引
-
接口发生死循环
- 普通死循环
while(true) 在CAS自旋锁中常见 - 无限递归
-
线程池溢出,我们调用的API接口,有时候为了性能考虑,可能会使用线程池异步查询数据,最后把查询结果进行汇总,然后返回。
-
接口超时时间设置过短,合理设置连接超时时间和读超时时间,业务并发量大的时候设置超时时间短一点,设置成秒级或者毫秒级,业务并发量小的时候设置稍长一点,连接超时时间设置为10s,读超时时间设置为20s
-
一次性返回的数据过多,比如调用第三方API更新数据库的时候,一次性批量更新太多太多的数据,更新时间还相同
-
传入参数过多,比如说根据id集合批量查询分类接口,传入了几千甚至几万的id
-
服务OOM 了
-
在 debug