Jetty 9忽略我的配置XML
我在一个项目中使用Jetty Runner,最近升级到Jetty 9。使用新配置迁移XML后,我注意到启动日志中有以下行:Jetty 9忽略我的配置XML,jetty,embedded-jetty,Jetty,Embedded Jetty,我在一个项目中使用Jetty Runner,最近升级到Jetty 9。使用新配置迁移XML后,我注意到启动日志中有以下行: WARN:oejx.XmlConfiguration:main: Ignored arg: ... 正在打印的arg几乎就是我的整个XML,即: <?xml version="1.0"?> <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/j
WARN:oejx.XmlConfiguration:main: Ignored arg: ...
正在打印的arg几乎就是我的整个XML,即:
<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN"
"http://www.eclipse.org/jetty/configure.dtd">
<Configure id="Server" class="org.eclipse.jetty.server.Server">
<Arg name="threadpool">
<New class="org.eclipse.jetty.util.thread.QueuedThreadPool">
<Arg name="maxThreads">200</Arg>
<Arg name="minThreads">50</Arg>
<Arg name="idleTimeout">1000</Arg>
<Arg name="queue">
<New class="java.util.concurrent.ArrayBlockingQueue">
<Arg type="int">6000</Arg>
</New>
</Arg>
<Set name="detailedDump">false</Set>
</New>
</Arg>
</Configure>
200
50
1000
6000
假的
我已经用当前的Jetty Javadocs检查了每个arg name/type/setter,但仍然无法理解这个设置有什么问题,需要忽略
您能帮忙吗?更新日期:2018年2月
忽略参数:
表示您有一个,相同):
...
10
200
60000
假的
如果您想从QueuedThreadPool
更改为其他内容,这被认为是一个极端的专家级选项。您必须意识到这将对服务器产生的影响
更改最小/最大螺纹时,请注意以下事项:
- 您拥有的CPU核心数。(这会影响所需的最小螺纹)
- 您拥有的网络接口数。(这会影响所需的最小螺纹)
- 您将同时拥有的连接数。(这会影响所需的最小螺纹)
- 您将同时收到的请求数。(这会影响所需的最小螺纹)
- HTTP/2的使用将显著增加线程需求
- 使用老式的Servlet阻塞API将增加线程需求。(考虑使用较新的AsyncContext和异步I/O行为,它将显著降低线程需求)
一些最小线程示例:
以下示例仅供说明,并不代表码头项目的“推荐”值集。
Jetty建议值是Jetty中已存在的默认值
在Intel i7上,具有1个网络接口,服务于一个普通网页,并具有资源(图像、css、javascript等)。您需要(8个cpu内核、1个网络接口、1个接收器、1个选择器,以及大约10个以上的线程来为典型的现代Chrome浏览器提供网页及其资源)至少22个线程
在具有1个网络接口的Raspberry Pi上,按顺序(从不并行)向单个REST客户机提供REST请求,您至少需要8个线程
更多注意事项:
另外,不要假设1个线程==1个请求/响应交换。在码头上不是这样的。单个请求/响应交换可以由[1…n]个线程在其生存期内处理。只有使用老式ServletAPI阻止读/写操作才能保存线程(同样,使用新的ServletAPI异步I/O操作)
如果你想在线程/线程上的某个假设下调整线程配置,考虑使用<代码> QoSp滤镜< /COD>(用于控制端点/资源特定行为)或<代码> DoSFilter < /代码>(用于控制总体负载限制)。
旧答案(自2013年12月起)
1)修复您的DTD
你的:
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN"
"http://www.eclipse.org/jetty/configure.dtd">
上述内容已通过jetty-9.1.0.v20131115分发验证。Ops!谢谢修复,但消息仍然存在。请在问题中包含完整的错误/警告消息,不要对其进行修剪或缩写。完整的Jetty IoC XML内容可能也是解决问题所必需的。至于完整的错误/警告消息,下面是:2013-12-09 13:18:29.320:WARN:oejx.XmlConfiguration:main:Ignored arg:| 200501000 | 6000 | false |检查Jetty的源代码时,我注意到消息来自与已创建的对象一起使用的“arg”标记(似乎是这样,因为我已经有了一台服务器)。也许这意味着我只能用“newserver(…)”在Java代码中设置线程池?不幸的是,目前建议的XML也不起作用。
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN"
"http://www.eclipse.org/jetty/configure_9_0.dtd">