【问题标题】:what is ideal fixed thread pool size for a task in which remote API is called (timeout-30s) also includes CRUD db operation in the same?对于调用远程 API 的任务(超时 30 秒),理想的固定线程池大小是多少也包括 CRUD db 操作?
【发布时间】:2020-09-23 00:45:12
【问题描述】:
我在我的 Spring Boot 应用程序(还包括 spring-data-jpa)中使用 ThreadPoolExecutor,固定线程池大小为 60。线程任务包含远程 api 调用和数据库上的 CRUD 操作(SQL-server 2012)。
- 我可以用来执行此操作的池的理想大小是多少
操作?
- 在实施时我需要采取哪些预防措施?
- 我是否有可能因为并发事务而在数据库中遇到死锁?
- 如果有任何用于 CRUD 操作的调优技术,请提出建议。
【问题讨论】:
标签:
java
multithreading
spring-boot
spring-data-jpa
threadpool
【解决方案1】:
在您设置任何线程池配置之前,我建议您执行以下步骤。
- 我可以用来执行此操作的池的理想大小是多少
手术?
您的线程任务花费了多少时间,您的流量有多少?这将帮助您提出最佳线程池大小和超时设置
池中的线程。
- 在实施时我需要采取哪些预防措施?
我将确保线程有超时设置,并且每个外部系统接触点(如 api、数据库等)都有超时设置。这将确保您的线程正常超时。
- 我是否有可能因为并发事务而在数据库中遇到死锁?
通常,数据库非常擅长在发生写入时锁定记录,但这又取决于您在数据库中运行的查询类型。
这个问题需要更多信息才能有效回答。
【讨论】:
-
我们与其他网站有些不同;这不是一个讨论论坛,而是一个问答网站,我们在其中保留了答案空间。请查看我们的简短tour。您能否请edit这个更直接地解决这个问题?