`
can_do
  • 浏览: 266168 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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主要是功能实现方面考虑的问题,在此处暂不给出调优建议。

【温馨提示】
如果您觉得满意,可以选择支持下,您的支持是我最大的动力:

分享到:
评论

相关推荐

    详解SpringBoot初始教程之Tomcat、Https配置以及Jetty优化

    在 Spring Boot 项目中,默认情况下使用的是内置的 Tomcat 容器,但是也可以配置支持内置的 Jetty 容器。使用内置容器的好处包括: * 方便微服务部署 * 方便项目启动,不需要下载 Tomcat 或者 Jetty 1.1 优化策略 ...

    Jetty 学习资料汇总

    3. **安装与配置**:介绍如何下载Jetty,设置环境变量,以及配置Jetty启动参数。 4. **Jetty与Maven集成**:讲解如何在Maven项目中添加Jetty插件,实现快速的本地开发服务器。 二、Jetty核心概念 1. **Servlet**...

    jetty 学习资料合集

    7. **性能调优**:了解如何通过调整Jetty的配置参数来提高服务器性能,如增大线程池大小、优化内存分配等。 8. **故障排查**:学习如何分析Jetty的日志,定位并解决问题,以及如何使用Jetty提供的监控工具进行问题...

    jetty启动器资源配置文件

    进一步配置服务器线程池,这是控制服务器内存占用和性能调优的关键参数之一: ```xml &lt;!-- Configure the Server ThreadPool. --&gt; &lt;!-- The server holds a common thread pool which is used by --&gt; &lt;!-- default ...

    Jetty权威指南.pdf

    Jetty还支持实时监控服务器的状态,如CPU利用率、内存使用情况等,这对于性能调优非常重要。 **10.4 关闭服务器** 在某些情况下,可能需要优雅地关闭Jetty服务器。可以通过调用`Server.stop()`方法来实现。 **...

    jetty安装包

    7. **监控和优化**:使用Jetty提供的监控工具,例如`jetty-console`或`jetty-statistics`,可以实时查看服务器性能,进行必要的调优。 通过以上步骤,你可以在Jetty服务器上顺利部署和运行包含JavaCV的项目。记得在...

    osgi-jetty-9.3.10环境配置-注册Servlet工程示例

    对于Jetty的性能调优,有几个关键点可以关注: 1. **线程池配置**:Jetty使用线程池处理请求,可以通过调整线程池的大小来优化性能。例如,设置最小线程数、最大线程数、线程空闲超时时间等。 2. **连接器优化**:...

    jetty-9.4.2

    4. **性能优化**:Jetty团队不断进行性能调优,9.4.2版本可能包含更快的请求处理速度、内存使用优化以及更好的多线程模型。 5. **安全增强**:Jetty提供了安全的HTTP会话管理、SSL/TLS支持以及与JAAS(Java ...

    jetty服务器性能调整过程分析

    本篇文章的目标是通过调整Jetty服务器的各项配置参数,来观察并评估其对服务器性能的影响,并进一步提炼出一套适用于服务端程序调优的一般性策略。 #### 二、Jetty关键实现 ##### 1. Acceptor组件 Acceptor组件的...

    jetty实施手册

    Jetty的配置包括了启动参数、日志设置、安全性配置以及性能调优等方面,这些配置需要根据具体的应用需求和服务器环境进行细致调整。 **3.4 dbcp配置** dbcp(Database Connection Pool)是数据库连接池的一种实现...

    jetty 服务器

    - Jetty的性能可以通过调整线程池大小、缓存策略、连接超时时间等参数进行优化。此外,监控和日志系统也有助于诊断和改善性能问题。 7. **社区支持**: - Jetty有一个活跃的开发者社区,提供了详细的文档、示例...

    应用服务架构及调优

    - **调整JVM参数**:合理设置堆内存大小、垃圾回收策略等可以显著提高服务器性能。 - **优化连接池配置**:通过调整数据库连接池的大小来提高数据访问速度。 - **使用缓存机制**:引入缓存可以有效减轻数据库的压力...

    应用服务架构及性能调优详解

    内容概要:该文档介绍了常见的三种Java应用服务器(JBoss, Tomcat, Jetty)的整体架构及其启动流程,并深入探讨了它们各自的特性与配置要点。此外,文中还详细阐述了应用服务器的关键组件如类加载器(ClassLoader)的...

    JAVA JVM性能调优监控工具详解

    2458 org.artifactory.standalone.main.Main /usr/local/artifactory-2.2.5/etc/jetty.xml 29920 com.sun.tools.hat.Main -port 9998 /tmp/dump.dat 3149 org.apache.catalina.startup.Bootstrap start 30972 sun....

    JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解.docx

    例如:jps -m -l 2458 org.artifactory.standalone.main.Main /usr/local/artifactory-2.2.5/etc/jetty.xml 二、jstack jstack 主要用来查看某个 Java 进程内的线程堆栈信息。语法格式如下:jstack [option] pid ...

    Android i-jetty开源项目.zip

    - **性能调优**: 根据实际需求调整服务器参数,如最大连接数、超时时间等。 - **安全考虑**: 必须确保Web服务的安全性,避免开放不必要的接口。 通过Android i-jetty,开发者可以在Android应用中构建自己的微型Web...

    jboss性能调优

    尽管Jboss核心服务主要是一个EJB服务器,但它可以通过与其他轻量级Web服务器如Tomcat或Jetty结合来提供完整的J2EE环境。以下是Jboss的六大优点: 1. 免费:Jboss是基于LGPL许可证的开源J2EE实现。 2. 小巧:它对...

    Apache Tomcat JBOSS Nginx区别

    Jetty 是基于 Tomcat 内核的 Servlet 容器引擎,并加以审核和调优。Jetty 通过使用 APR 和 Tomcat 本地技术的混合模型来解决 Tomcat 的诸多不足,例如性能问题和受限的集成平台问题。Jetty 能够提供数据库连接池服务...

    Javaweb容量配置

    正确配置Maven容器,尤其是选用合适的插件如Jetty Maven插件,可以简化开发流程,提高开发效率,同时为后续的性能调优打下坚实的基础。在实际工作中,开发者需要结合应用的特性、预期流量以及硬件资源,不断调整和...

Global site tag (gtag.js) - Google Analytics