我对性能调整有疑问。
我正在使用Linux 64位服务器Java 1.8和wildfly 10.0.0.final。我开发了一个Web服务,该服务通过Wildfly配置使用线程工厂和托管执行程序服务。
我的网络服务的目的是接收具有大数据的请求,保存数据,然后创建一个新线程来处理此数据,然后将响应返回给请求。这样,Web服务可以快速返回响应,而无需等待数据处理完成。 已配置的托管执行器服务专门为此目的保存线程池配置。
就我在配置中的理解而言,核心线程定义了线程池中将有多少个线程处于活动状态。当核心线程已满时,新请求将被放入队列中;当队列已满时,将创建新线程,但是这些新创建的线程将在一段时间后终止。
我正在尝试找出设置线程池的最佳组合。以下是我的担忧:
如果此核心线程设置得太小(如5),则响应时间可能会很长,因为只有5个活动线程正在处理数据,其余线程放入队列,直到队列满为止。在重负载时间响应时间看起来并不好
如果我将核心线程设置为大线程(例如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"/>
非常感谢您的帮助,
海伦