Jetty调优参数

1、线程池(ThreadPool)

ThreadPool的大致工作方式是:如果存在一个空闲线程,则让它去执行请求处理。如果不存在且没有达到设定的最大线程数,那么就新建一个Thread去执行请求处理。如果已经达到最大线程数,那么就将工作任务放到队列里面排队,等到有空闲线程时再执行任务。



线程池线程资源大小确定了服务器的服务能力,默认大小不一定能满足生产环境,线程分配方式决定了服务器的资源利用效率,jetty自带的线程池QueuedThreadPool。注意之前的版本是:类【org.mortbay.thread.QueuedThreadPool】,后续的版本变为:【org.eclipse.jetty.util.thread.QueuedThreadPool】,类名称没变,包路径改了。

样例配置如下:

begin/

<Set name="ThreadPool">

<!-- Default queued blocking threadpool -->

<New class="org.eclipse.jetty.util.thread.QueuedThreadPool">

<Set name="minThreads">10</Set>

<Set name="maxThreads">200</Set>

<Set name="detailedDump">false</Set>

</New>

</Set>



end///

这个是默认配置,优化时可以调整最小线程数【minThreads】和最大线程数【maxThreads】。【detailedDump】表示是否记录详细的thread dump,默认不记录。

2、连接器(Connector)



Connector主要分两类,BIO模式和NIO模式。



BIO模式的Connector有:

ScoketConnector (HTTP)



Ajp13SocketConnector (AJP)



SslSocketConnector (SSL)



(2)、NIO模式的Connector有:
SelectChannelConnector (HTTP)



SslSelectChannelConnector (SSL)



Jetty中默认的Connector就是异步的,如下:



/begin//

<Call name="addConnector">

<Arg>

<New class="org.eclipse.jetty.server.nio.SelectChannelConnector">

<Set name="host"><Property name="jetty.host" /></Set>

<Set name="port"><Property name="jetty.port" default="8080"/></Set>

<Set name="maxIdleTime">3000</Set>

<Set name="acceptors">8</Set>

<Set name="statsOn">false</Set>

<Set name="confidentialPort">8443</Set>

<Set name="lowResourcesConnections">10000</Set>

<Set name="lowResourcesMaxIdleTime">1000</Set>

<Set name="acceptQueueSize">1000</Set>

</New>

</Arg>

</Call>



/end



注意,如果配置多个Connector的话,建议各个Connector共享同一个线程池,即需要在Connector中指定线程池的名称,如:

各参数的含义:

host:jetty所在主机的IP或主机名;
port:设置jetty的端口号;
maxIdleTime:表示连接最大空闲时间,单位是ms,默认值300000这个值太大,典型值3000左右足够;
acceptors:接收线程数量,Acceptor的功能是接收客户端连接然后分配个给ThreadPool处理,表示同时在监听read事件的线程数,缺省值为2,对于NIO来说,建议值2*(处理器核数-1);或者小于等于2*处理器核数;
acceptQueueSize:在OS发起拒绝连接之前,请求连接排队的数量;
statsOn:是否开启统计功能,调优时建议关闭统计功能。
confidentialPort:受信端口号;
lowResourcesConnections: 连接数量达到该数值时,Jetty会认为服务器资源已被耗尽。只有NIO才有这个设置,表示连接空闲时的最大连接数,大于这个数将被shutdown,每个acceptor的连接数=(lowResourcesConnections+acceptor-1)/ acceptor。
lowResourcesMaxIdleTime:表示可用线程稀少时或者当资源饱和时,连接最大等待时间,时间单位是毫秒,一般设置为<= maxIdleTime;


3、处理器(Handler)
Handler分为三类:

内容输出Handler
该类Handler根据target输出内容。如:ResourceHandler、ServletHandler、DefaultHandler等。这些类都是直接对Handler接口进行实现。

装饰模式Handler
该类Handler可以选择在交给另外一个Handler对象调用前或后来处理Request和Response。这些类都继承自HandlerWrapper类。

集合类Handler
该类Handler的作用是讲请求分发给其他Handler处理,分发策略由各自实现类决定。常用集合类Handler有HandlerCollection、HandlerList、ContextHandlerCollection。



Handler主要是功能实现方面考虑的问题,在此处暂不给出调优建议。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值