目前遇到个场景,一个用户钱包接口,保护多个账户类型余额字段,每个字段需要单独请求结算服务查询,目前使用多线程去请求结算服务,但当请求数升高时,结算服务的响应时间会增加,应该是导致了我的线程池任务堆积,新任务提交到被执行的时间几乎等于结算的响应时间;
刚开始我想配置更多的线程数来降低任务调度时间(指任务提交到被执行的时间),但效果不明显,姑且是认为测试机的核心线程数不够,但是我有些好奇,请求结算期间,线程会让出吗?还是会一直等待,导致新任务无法被执行?
那么我想要提高qps的话,是不是最好把等待队列设为0,然后把拒绝策略改为使用主线程,然后提高最大线程数?
最后是让结算服务想办法处理高qps时的响应时间上升?
如果想观察线程池的情况以及线程在运行时的情况应该使用什么工具?
多线程rpc时,在等待返回期间线程会让出cpu吗(语言-java)
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- a1767028198 2022-06-26 00:44关注
网络io应该是会让出cpu的,但是你这里的问题是,就算让出去了,你因为线程池的限制,只能实例化最大线程数的工作线程,我在想,会不会出现一种情况,此时所有的工作线程因为请求接口的问题,都让出了cpu,但是你受制于线程池的最大线程数,导致没有工作线程可以继续运行,最后的效果就是我工作队列堆积以后,只有一个结算服务的接口请求任务完结,工作线程才会去消费工作队列的任务!
解决 无用评论 打赏 举报
悬赏问题
- ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
- ¥15 乘性高斯噪声在深度学习网络中的应用
- ¥15 运筹学排序问题中的在线排序
- ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
- ¥30 求一段fortran代码用IVF编译运行的结果
- ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
- ¥15 C++ 头文件/宏冲突问题解决
- ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
- ¥50 安卓adb backup备份子用户应用数据失败
- ¥20 有人能用聚类分析帮我分析一下文本内容嘛