首页 > 解决方案 > 对于调用远程 API 的任务(超时 30 秒),理想的固定线程池大小是多少也包括 CRUD db 操作?

问题描述

我在我的 Spring Boot 应用程序(还包括 spring-data-jpa)中使用 ThreadPoolExecutor,固定线程池大小为 60。线程任务包含远程 api 调用和数据库上的 CRUD 操作(SQL-server 2012)。

  1. 我可以用来执行此操作的池的理想大小是多少?
  2. 实施时我需要采取哪些预防措施?
  3. 由于并发事务,我是否有可能在数据库中遇到死锁?
  4. 如果有任何用于 CRUD 操作的调优技术,请提出建议。

标签: javamultithreadingspring-bootspring-data-jpathreadpool

解决方案


在设置任何线程池配置之前,我会推荐以下步骤。

  1. 我可以用来执行此操作的池的理想大小是多少?您的线程任务花费了多少时间,您的流量有多少?这将帮助您为池中的线程提出最佳线程池大小和超时设置。
  2. 实施时我需要采取哪些预防措施?我将确保线程有超时设置,并且每个外部系统接触点(如 api、数据库等)都有超时设置。这将确保您的线程正常超时。
  3. 由于并发事务,我是否有可能在数据库中遇到死锁?通常数据库非常擅长在发生写入时锁定记录,但这又取决于您在数据库中运行的查询类型。

这个问题需要更多信息才能有效回答。


推荐阅读