java - 对于调用远程 API 的任务(超时 30 秒),理想的固定线程池大小是多少也包括 CRUD db 操作?
问题描述
我在我的 Spring Boot 应用程序(还包括 spring-data-jpa)中使用 ThreadPoolExecutor,固定线程池大小为 60。线程任务包含远程 api 调用和数据库上的 CRUD 操作(SQL-server 2012)。
- 我可以用来执行此操作的池的理想大小是多少?
- 实施时我需要采取哪些预防措施?
- 由于并发事务,我是否有可能在数据库中遇到死锁?
- 如果有任何用于 CRUD 操作的调优技术,请提出建议。
解决方案
在设置任何线程池配置之前,我会推荐以下步骤。
- 我可以用来执行此操作的池的理想大小是多少?您的线程任务花费了多少时间,您的流量有多少?这将帮助您为池中的线程提出最佳线程池大小和超时设置。
- 实施时我需要采取哪些预防措施?我将确保线程有超时设置,并且每个外部系统接触点(如 api、数据库等)都有超时设置。这将确保您的线程正常超时。
- 由于并发事务,我是否有可能在数据库中遇到死锁?通常数据库非常擅长在发生写入时锁定记录,但这又取决于您在数据库中运行的查询类型。
这个问题需要更多信息才能有效回答。
推荐阅读
- .net - 在 DotNet 中将每页一页的 PDF 转换(不打印)为每页多页的 PDF
- php - 我无法自动刷新浏览器并清除缓存
- java - 使用 java.Calendar 在其他两个人之间的日历
- c# - 我的 Foreach 循环遍历主节点下的子节点列表,并且只选择第一个节点
- android - 如何为 Flutter 应用启用密码管理器自动填充功能?
- android - 无法解析符号 FirebaseVisionTextDetector
- c - lseek 和 offset 是做什么的
- python - Django 错误 pipeline.exceptions.CompilerError: [WinError 2] 系统找不到指定的文件
- python - Python,为什么这个 lambda 函数不正确?
- c++ - 如何在自定义类中启用“自动循环”?