爱陪小樱桃

导航

 

系统阻塞场景问题

1.前端无限制的请求
2.大文件上传,导出
3.线程池耗尽
4.内存泄漏,溢出
5.代码逻辑错误,比如死循环。
6.数据库连接池沾满
7.数据库慢查询(索引不生效,在刷脏数据)
8.下游接口无响应,但是又没有设置超时时间。
9.缓存,消息队列故障。

前端无限制的并发请求

导致线程池被瞬间沾满,系统就会卡住。因此我们在设置的时候要进行限流控制。

大文件上传/导出

大文件导出,比如10万行excel数据,“数据处理”和“文件生成”
一次性加载全量数据,内存直接撑爆。

线程池耗尽:

比如Tomcat默认线程数据是200,若接口平均处理时间从100ms增加到5s,每秒只能处理40个请求,当并发超过40时就会排队,超过200则直接拒绝。

内存泄漏/溢出:

未关闭IO流,静态集合无限制存储数据,会导致JVM内存持续增长,最终触发GC频繁,表现为:间接性无响应。

写的代码里面死循环:

假设每次请求都会执行一段死循环代码,当多次调用的时候,就会大量的死循环占用CPU。很快线程池被沾满,请求无法处理,此时调用其他接口会发现,要么超时,要么完全无响应,--系统阻塞了。

数据库连接池沾满

当数据库的连接被耗尽的且无法释放的时候,新的数据库操作,就会排队等待空闲连接,最终导致系统缓慢或者无响应。

数据库慢查询

慢查询是指:执行时间超长的sql,会长期占用数据库连接和CPU
例如:执行30秒,执行的时候被锁住无法释放,若同时有5个这样的请求,那么其他数据库的请求就会排队,表现接口超时。

下游接口无响应,又没有设置超时时间:

中间件的

1.比如缓存服务崩溃,所有连接请求都会卡主
2。每个请求占用一个Tomcat线程,且不会释放
3.线程被沾满后,系统阻塞。

posted on 2025-08-26 22:32  cherry小樱桃  阅读(12)  评论(0)    收藏  举报