java - 如何调整wildfly managed-executor-service 线程池参数
问题描述
我对性能调整有疑问。
我正在使用 Linux 64 位服务器,java 1.8 和 wildfly 10.0.0.final 。我开发了一个 web 服务,它通过 wildfly 配置使用线程工厂和托管执行器服务。
我的webervice的目的是接收有大数据的请求,保存数据,然后创建一个新线程来处理这些数据,然后返回对请求的响应。这样,webservice 可以快速返回响应,而无需等待数据处理完成。配置的 managed-executor-service 拥有一个专门用于此目的的线程池配置。
根据我对配置的理解,核心线程定义了线程池中将有多少线程处于活动状态。当核心线程满时,新的请求将被放入队列,当队列满时,将创建新线程,但这些新创建的线程将在一段时间后终止。
我试图弄清楚设置线程池的最佳组合是什么。以下是我的担忧:
如果这个 core-thread 设置得太小(比如 5),可能响应时间会很长,因为只有 5 个活动线程在处理数据,其余的都放在队列中,直到队列满。在重负载时响应时间看起来不太好
如果我将 core-thread 设置得很大(可能是 100 个),这意味着即使系统不忙,池中仍然会有 100 个活动线程。我没有看到任何可以允许终止这些线程的配置。我担心它有太多的活动线程空闲。
有没有人对如何设置参数以处理重负载和轻负载情况有任何建议,而不会在池中留下太多空闲线程?我其实不熟悉这个领域,像多少空闲线程意味着太多,如何衡量它。
以下是线程工厂和托管执行器服务的配置。
<managed-thread-factory name="UploadThreadFactory" jndi-name="java:jboss/ee/concurrency/factory/uploadThreadFactory"/>
<managed-executor-service name="UploadManagedExecutor" Jodi-name="java:jboss/ee/concurrency/executor/uploadManagedExecutor" context-service="default" thread-factory="UploadThreadFactory" hung-task-threshold="60000" core-thread="5" max-thread="100" keep-alive-time="5000" queue-length="500"/>
非常感谢你的帮助,
海伦
解决方案
推荐阅读
- python - 我们如何使用 python 驱动程序连接到远程 Cassandra 服务器
- reactjs - 使用 Gatsby 和 Stripe 时如何修复“IntegrationError: No such sku: "prod_....." 错误
- ios - 如何调整 CALayer 大小以适应父视图
- excel - 工作表的 Excel Vba 复制方法失败 - 从 xlApp 复制到 ThisWorkbook
- php - 为什么我通过 Cloudflare 收到连续的 524 错误?
- azure - 有没有办法检查 Log Analytics 字段中的子字符串是否存在?
- sql - 无法执行 SQL Server 存储过程
- node.js - Bash 终端中的文本被覆盖!使用JS、Node.js(npms有:inquirer、console.table、mysql)
- python - 在 pandas 数据框的列中填充空值
- avro - Spring Cloud Stream Kafka Consumer 应用程序不允许添加供应商