在Jetty 9中更改线程池大小

Ale*_*niy 24 java servlets jetty

如何在嵌入式Jetty 9中更改线程池大小?我们需要任何特定的组件吗?

roc*_*boy 27

来自docs:

Server实例提供ThreadPool实例,该实例是其他Jetty服务器组件使用的默认Executor服务.线程池的主要配置是最大和最小大小,并在etc/jetty.xml中设置.

<Configure id="server" class="org.eclipse.jetty.server.Server">   
<Set name="threadPool">
    <New class="org.eclipse.jetty.util.thread.QueuedThreadPool">
      <Set name="minThreads">10</Set>
      <Set name="maxThreads">1000</Set>
    </New>
</Set> 
</Configure>
Run Code Online (Sandbox Code Playgroud)

要么

QueuedThreadPool threadPool = new QueuedThreadPool(100, 10);
Server server = new Server(threadPool);
Run Code Online (Sandbox Code Playgroud)

  • 您的代码示例不适用于Jetty 9.04,因为Server类中没有setThreadPool方法.此外,我需要嵌入式jetty服务器的这种偏好,我已经更新了一个问题. (6认同)
  • ThreadPool可以在Server实例的构造函数中传入,或者只是调用server.getThreadPool()并在调用.start()之前调整它. (5认同)
  • 但是如何同时设置端口? (3认同)

小智 20

如上所述,并在上面的Java代码示例中进行了更正,现在将线程池作为Jetty 9(及更高版本)中的构造函数参数提供.

更正后的XML示例:

<Configure id="Server" class="org.eclipse.jetty.server.Server">

    <!-- =========================================================== -->
    <!-- Configure the Server Thread Pool.                           -->
    <!--                                                             -->
    <!-- Consult the javadoc of o.e.j.util.thread.QueuedThreadPool   -->
    <!-- for all configuration that may be set here.                 -->
    <!-- =========================================================== -->
    <Get name="ThreadPool">
        <Set name="minThreads" type="int">10</Set>
        <Set name="maxThreads" type="int">200</Set>
        <Set name="idleTimeout" type="int">60000</Set>
        <Set name="detailedDump">false</Set>
    </Get>
    ...
Run Code Online (Sandbox Code Playgroud)