我正在编写一个Spring服务,它使N个调用另一个服务缝合响应并将其返回给客户端。我想我应该并行进行N次呼叫,一旦完成,我就能完成响应。
我正在创建一个新的FixedThreadPoolExecutor,我想为N中的每一个提交一个线程。我听到了线程数应该是的建议:
Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() + 1)
在这种情况下会出现这种情况吗?我的应用程序中的大部分时间都在等待我呼叫的服务以响应每个项目。
现在我正在使用新的CachedThreadPool,显然这是错误的选择,因为我注意到我的线程数以万计。我在使用此规范的机器上运行:
CPU预留(以mCores *为单位)* 1000 mCores = 1 Amazon vCPU = 1/2物理核心 :200
CPU限制阈值(在核心中) :2
内存储备(GB):1
内存节流阀门限(GB):2