• Tomcat配置优化


    一、tomcat内存优化

    打开bin下catalina.bat文件

     

    在文件的第一处非注释行出添加

    1 set JAVA_OPTS=-server -Xms2g -Xmx2g -Xss256k

      

    参数含义:

    -server:以server模式运行java程序

    -Xms:初始化堆内存大小

    -Xmx:堆内存最大容量

    -Xss:设定每个线程的堆栈大小

      JDK9之前ParallelGC作为默认垃圾回收器,优化配置JVM需要设置大量参数,诸如-XX:NewRatio、-XX:SurvivorRatio等等,但随着JDK不断更迭,繁琐的参数已经不再需要且不再支持。JDK9开始,G1作为默认的垃圾回收器,G1GC 不必明确设置新生代大小,其自动调优也十分可靠,对于停顿时间往往在长时间运行后可以达到预期效果。不建议进行过多的配置。

    二、tomcat线程池优化

    打开conf下server.xml

     

    全局搜索executor,在注释中可以找到,同节点位置添加:

    1 <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" deamon="true"
    2       minSpareThreads="100" maxSpareThreads="300" maxThreads="600"
    3 maxQueueSize="1000000" maxIdleTime="60000"
    4        prestartminSpareThreads="true"/>

    然后搜索Connector,找到tomcat的http连接器,添加连接器与线程池关联

    1 <Connector port="8080" protocol="HTTP/1.1"
    2    connectionTimeout="20000"
    3    redirectPort="8443"
    4    executor="tomcatThreadPool" />

    参数含义:

    namePrefix:线程池中线程的命名前缀。

    deamon : 是否守护线程运行,默认为true 

    minSpareThreads:Tomcat线程池的最小空闲线程数,等于初始的线程数。

    maxSpareThreads:Tomcat最大空闲线程数,超过的会被关闭。

    maxThreads:Tomcat 可用于处理请求的最大线程数,默认是200。

    maxIdleTime :空闲线程的存活时间 默认为60s,当线程空闲超时后,线程被回收

    maxQueueSize :任务队列最大大小,默认为Integer.MAX_VALUE  (2147483647 )这太大了 有点不合适

    prestartminSpareThreads :是否在tomcat启动时就创建minSpareThreads个线程放入线程池,默认为false

    executorTerminationTimeoutMillis :在停止executor时,等待请求处理线程终止的超时时间

    三、Tomcat连接器优化

    打开conf下server.xml

     

    搜索Connector,找到tomcat的http连接器,添加参数如下

    1 <Connector port="8080" protocol="HTTP/1.1"
    2                connectionTimeout="20000"
    3                redirectPort="8443" 
    4                executor="tomcatThreadPool"
    5                maxConnections="10000"
    6                acceptCount="1000"
    7                enableLookups="false" />

    参数含义:

    maxConnections:最大连接数,当达到该值后,服务器接收但不会处理更多请求,额外的请求将会进入TCP等待队列。默认值为8192。

    acceptCount:最大排队等待数,即连接数达到maxConnections后的TCP等待队列。默认为100。

    enableLookups: request.getRemoteHost()获取远程计算机ip,Tomcat9默认为关闭。

    四、tomcat日志优化

    打开conf目录下logging.properties文件

     

    搜索所有编码设置行,进行注释即可

     

    原理:由于tomcat9开始默认为UTF-8编码,鉴于windows默认本地编码不同,会出现日志乱码,解决方法为注掉tomcat配置的编码,这样tomcat就会调用系统默认编码。

    五、Tomcat安全优化(适用于生产环境)

    移除webapps目录下的所有应用,防止server管理带来的安全漏洞

     

    禁用远程shutdown的端口

    1 <Server port="-1" shutdown="SHUTDOWN">

    或改变shutdown指令 

    1 <Server port="8005" shutdown="tomcat_shutdown">

    六、Tomcat部署优化(适用于测试环境) 

    1,配置tomcat管理用户

    在tomcat配置文件目录找到tomcat-users.xml

     

    在配置文件tomcat-users标签内添加下列内容

    1 <role rolename="manager-script"/>
    2 <user username="root" password="root" roles="manager-script"/>

    2,开启管理用户通过网络远程热部署 

    在conf/Catalina/localhost目录中建立manager.xml文件

     

    编辑manager.xml文件内容为

    1 <?xml version="1.0" encoding="UTF-8"?>
    2 <Context privileged="true" antiResourceLocking="false" docBase="${catalina.home}/webapps/manager">
    3     <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
    4 </Context>

    3,开发环境tomcat插件配置 

    打开开发环境中maven项目pom文件,找到maven插件tomcat7-maven-plugin,进行相应的参数配置

     1 <plugin>
     2     <groupId>org.apache.tomcat.maven</groupId>
     3     <artifactId>tomcat7-maven-plugin</artifactId>
     4     <version>2.2</version>
     5     <configuration>
     6         <url>http://127.0.0.1:8080/manager/text</url>
     7         <username>root</username>
     8         <password>root</password>
     9         <update>true</update>
    10         <path>/centerbusiness</path>
    11     </configuration>
    12 </plugin>

     

  • 相关阅读:
    maven打包将依赖和配置外置的配置方式
    AngularJS零碎总结
    Python零碎总结
    win10 平台 elasticsearch 与 elasticsearch-head 的安装
    DDD中的分层架构
    读书有感--------软件的设计原则
    DDD初探
    HTTP could not register URL http://+:86/. 设置VS默认以管理员权限打开
    .net 实战 根据configuration选项生成不同的config文件
    asp.net mvc5轻松实现插件式开发
  • 原文地址:https://www.cnblogs.com/guanghe/p/13603631.html
Copyright © 2020-2023  润新知