怎样避免数据库不响应导致数据库线程池和业务线程池全部挂起
与数据库交互,最优的方式还是异步io啦如果这个实现不了,那么只能搞个线程池去负责了,注意,这种io密集型任务,多开几个线程最好做成连接池,内部实现和暴露接口分离,接口返回的数据类型completablefuture最好了,这样异步处理,io时也不需要你的业务线程等待
■网友
在一般业务并发处理中,能抛出主业务就抛出主业务,让主业务能最大并发处理。
当然如果在主业务中数据库响应很慢,而且持续时间很长,那么无论线程池中多少个线程(线程无线多也不是什么好事),最终还是被消耗殆尽。
额
【怎样避免数据库不响应导致数据库线程池和业务线程池全部挂起】 我并不知道楼主的业务场景,我就拿普通交易系统来讨论。
如果你业务处理全部在一个数据库中,全部挂起,这种问题,没法解决,喊DBA优化你的数据库或者升级配置吧。
如果是暂时的,可以对业务每笔采用超时时间,超时则业务回滚,冲正。
如果你的部分业务不在一个数据库中, 可以做一个流量限制,让余下的线程可以正常处理其他业务。
■网友
数据库读写线程做超时,哪怕异步了,堵住了没有超时一样会死。再用个守护线程去检测这些排队的情况,一旦超出阈值就报警吧。
■网友
可以设置等待响应时间,超过即丢掉请求。数据库响应不及时也是很常见的,不能一直死等
推荐阅读
- 聪明人养花,这3种“花”怎样也要养一盆,每年能省不少医药费
- 互联网怎样解决“家政服务上门速度慢”的问题
- 怎样看待从1月8号起,QQ钱包开始提现收费
- 银行it人怎样转型
- 汽车|冬天怎样让车内温度快速升高?座椅加热的最佳使用方式二,外循环的作用总结
- 怎样进入通信行业
- 怎样评价扶他柠檬茶的小说《云养汉》的结尾
- 都更新|高中物理:高考做题陷阱总结!这些易错点赶紧避免吧!
- 怎样成为一名合格的Python程序员?
- 怎样评价华为、诺基亚、中兴中标中国移动高端路由交换设备扩容集采
