Tomcat优化-------web.xml、server.xml

server.xml

executor

  <!--连接池配置-->
  <Executor 
        name="selfThreadPool"                    --线程池名,根据具体业务定义,需要在Connector中引用才可以生效
        namePrefix="catalina-exec-"              --线程名称前缀,根据具体业务定义 namePrefix+threaNumber
        maxThreads="1000"                        --池中最大线程数
        minSpareThreads="100"                    --活跃线程数 会一直存在
        maxIdleTime="60000"                      --线程空闲时间,超过该时间,线程会被销毁 ms
        maxQueueSize="Integer.MAX_VALUE"         --被执行前线程的排队数目
        prestartminSpareThreads="false"          --启动线程池时,是否启用minSpareThreads部分线程
        threadPriority="5"                       --线程池中线程优先级 1~10
        className="org.apache.catalina.core.StandardThreadExecutor" --线程实现类 自定义线程需时间 org.apache.catalina.Executor类
  />

connector

    <Connector 
   executor="selfthreadPool" port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol" --协议类型,此协议对静态页面的亲和较好,需要安装apr,可以参考:https://www.cnblogs.com/zh-dream/p/13620379.html keepAliveTimeout="20000" maxKeepAliveRequests="500" --tomcat需要保持的最大请求数,即处于keepAlive状态的请求的个数,建议此值为maxThreads * 0.5,不得大于maxThreads,否则将得不到预期的效果,设置为-1时,表示禁用HTTP/1.0 keep-alive、HTTP/1.1 keep-alive和pending connectionTimeout="20000" --已接受,但未被处理的请求的等待超时时间 ms redirectPort="8443" --安全通信的转发端口 URIEncoding="UTF-8" --URL编码字符集 minSpareThreads="100" --默认初始化和保持空闲的线程数 enableLookups="false" --关闭DNS反向查询 useURIValidationHack="false" --关闭不必要的检查 maxThreads="1000" --处理请求线程的最大数目 未配置为200 此属性会被忽略 acceptCount="1000" --所用可能的线程都在使用时传入连接请求的最大长度 disableUploadTimeout="true" --设置允许更长的超时连接 maxConnections="1000" --接受和处理的最大连接数(nio/nio2 1000,apr 8192) maxHttpHeaderSize="8192" --请求和响应http头的最大大小 8k tcpNoDelay="true" --禁用Nagle算法,该算法用于连接小的缓冲信息,会降低通过网络发送数据包的数量,提升网络传输速率,但是对交互式应用来说,会增加响应时间 compression="on" --是否启用压缩 on off force compressionMinSize="2048" --压缩前数据最小值 2k byte noCompressionUserAgents="gozilla,traviata" --设置哪些浏览器不压缩 compressableMimeType="text/html,text/xml,text/css,application/javascript,text/plain" --设置压缩的文件类型 />

Host

需要禁用autodeploy属性

 

注意:如果采用server.xml文件中增加<Context>元素或者在Web应用的META-INF目录定义context.xml文件部署应用,需要确保reloadable属性为false,避免WEB-INF/classes或WEB-INF/lib目录下的文件变更时自动重新加载应用。

JSP页面的设置

[root@apache conf]# vim $CATALINA_HOME/conf/web.xml

    <servlet>
        <!-- 定义Servlet引擎的名称和应用类名称,DefaultServlet用于静态页面,JspServlet用于jsp页面,DispatcherServlet用于springMVC
 -->
        <servlet-name>jsp</servlet-name>
        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
        <init-param>
            <param-name>fork</param-name>
            <param-value>false</param-value>
        </init-param>
        <init-param>
            <!-- 调整Tomcat不检测JSP页面的修改,与reloading属性一样,通常在测试环境调试时设置为true -->
            <param-name>development</param-name>
            <param-value>false</param-value>
        </init-param>
        <init-param>
            <!-- 禁用Tomcat后台自动编译 -->
            <param-name>reloading</param-name>
            <param-value>false</param-value>
        </init-param>
        <init-param>
            <!-- JSP页面后台编译的触发频率,默认值0,单位 s -->
            <param-name>checkInterval</param-name>
            <param-value>0</param-value>
        </init-param>
        <init-param>
            <!-- 检测JSP页面修改的时间间隔,默认值4,单位 s -->
            <param-name>modificationTestInterval</param-name>
            <param-value>4</param-value>
        </init-param>
        <init-param>
            <!-- 生成高效的字符属组 -->
            <param-name>getStringAsCharArray</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <!-- 移除响应中无用的空格 -->
            <param-name>trimSpace</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>xpoweredBy</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>3</load-on-startup>
    </servlet>

其他与JSP性能相关的属性

org.apache.jasper.runtime.JspFactoryImpl.USE_POOL:是否启用Body池,默认启用

org.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER:整数,当输出JSP标签Body时,是否进行字符缓冲,默认为false

org.apache.jasper.runtime.JspFactoryImpl.POOL_SIZE:整数,JSP标签Body池大小,默认为8

以上三个参数可以在catalina.sh中启用:

  CATALINA_OPTS="-Dorg.apache.jasper.runtime.JspFactoryImpl.USE_POOL=true"

注意:如果JSP页面或者标签Body非常大,需要关闭此属性

 

如果报错:请求的jsp页面代码超过65535字节限制,可以将mappedfile置为false

        <init-param>
            <param-name>mappedfile</param-name>
            <param-value>false</param-value>
        </init-param>

 

上一篇:tomcat的jsp页面超过65535,导致500报错


下一篇:IDEA报org.apache.jasper.JasperException