• tomcat常用功能


    修改端口号

    1024-655365 之间取端口号
    Tomcat有3个重要端口:
    默认访问端口:8080
    默认监听关闭tomcat的端口:8005
    默认AJP访问端口:8009

    vim tomcat/conf/server.xml
    ···
    <Server port="8005" shutdown="SHUTDOWN"> #关闭时服务监听的端口
    ···
        <Connector port="8080" protocol="HTTP/1.1"  #客户端访问监听的端口
                   connectionTimeout="20000"
                   redirectPort="8443" />
    ···
        <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />  #处理AJP协议监听的端口
    

    修改内存

    修改tomcat内存有两种方式:

    1. 修改bin目录下的catalina.bat(Windows下)| catalina.sh(Linux下);
    2. 修改bin目录下的startup.bat(Windows下)| catalina.sh(Linux下);
    JAVA_OPTS="-server -Xms256m -Xms512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m"
    #将上面的代码添加到catalina.sh的第二行,或设置catalina.sh中第250行左右的JAVA_OPTS后面的参数。
    
    #注:server:虚拟机的运行模式,多个CPU的时候更好的发挥性能。默认是client。
    	Xms:堆内存。java heap初始大小,默认为物理内存的64分之1。最大不要超过物理内存的80%。
    	Xmx:java heap的最大值,建议设置为物理内存的一半。
    	MetaspaceSize:初始原空间的大小,默认21M。
    	MaxMetaspaceSize:最大原空间大小,默认无上限
    #另jvm默认的最小内存为机器物理内存的1/64,最大内存为机器物理内存的1/4
    

    为什么要修改Tomcat内存?

    日常开发中,开发项目比较大的时候依赖的jar包比较多,并且在应用服务器启动的时候,会将项目引用的所有的类依次全部加载到内存当中,java的逻辑内存模式分为堆内存(存储类的实例,数组、引用类型也就是用new生成的对象)、栈内存(存储局部变量比如方法参数)、静态内存区(持久区,该区内存不会被gc回收)

    常见内存异常:
    OutOfMemoryError:Java head space异常
    原因:堆内存满,依赖的jar太多。
    OutOfMemoryError : PermGen space异常
    原因:静态内存区满,加载的类太多
    StackOverflowError异常
    原因:栈内存溢出,死循环或无限递归导致

    Tomcat的热部署

    热部署的三种方式:

    1、将web应用文件war包直接放在webapps里,tomcat运行时会自动解压;
    
    2、修改sever.xml文件,在Host段内添加Context标签。如下:
    <Context debug="0" path="/xxxxdemo" docBase="项目路径" reloadable="true"></Context>
    
    #path为访问时端口号后加的路径,项目名。
    #debug为项目异常时,输出的日志文件的详细程度,值越大越详细。
    
    3、在conf/Catalina/localhost文件夹下新建xml文件,内容同上,这种情况不能设置path属性,tomcat不认,只能用该xml文件的名字作为部署的应用名。如下:
    <?xml version="1.0" encoding="UTF-8"?>
    <Context  docBase="项目路径" reloadable="true"></Context>
    

    隐藏版本号

    • lib/catalina.jar/org/apache/catalina/util/ServerInfo.properties中server.info=Apache Tomcat/8.5.31改为NO VERSION

    AJP协议

    若tomcat前面用nginx反向代理则可以忽略ajp连接器(connector),如若使用的是apache httpd服务器则不能关闭ajp连接器,关闭该连接器只需要注释掉server.xml中对应的节点即可。如下:

    修改Cookies安全性

    在tomcat context.xml配置文件中的context节点设置useHttpOnly=true即可开启cookie加密,提高安全性,使cookie不那么容易被窃取,预防xss攻击

    性能优化

    tomcat三种运动模式:

    • BIO:效率低下,一个线程只能处理一个请求,请求过多的时候,线程会相应的增加,很浪费资源,tomcat7以下版本是BIO,

    • NIO:基于缓存区、非阻塞的I/O。相对于BIO效率更高(少量线程处理多请求),

    • APR:需要操作系统的支持(tomcat7以及以上版本在操作系统安装了APR时候,tomcat默认是apr模式)

  • 相关阅读:
    RocketMQ学习笔记(9)----RocketMQ的Producer 顺序消息
    RocketMQ学习笔记(8)----RocketMQ的Producer API简介
    RocketMQ学习笔记(7)----RocketMQ的整体架构
    RocketMQ学习笔记(6)----RocketMQ的Client的使用 Producer/Consumer
    RocketMQ学习笔记(5)----RocketMQ监控平台rocketmq-console-ng的搭建
    RocketMQ学习笔记(4)----RocketMQ搭建双Master集群
    RocketMQ学习笔记(3)----RocketMQ物理结构和逻辑部署结构
    RocketMQ学习笔记(1)----RocketMQ的简介
    RocketMQ学习笔记(2)----Broker的集群四种方式
    Docker学习笔记(1)----认识Docker
  • 原文地址:https://www.cnblogs.com/Smbands/p/11468624.html
Copyright © 2020-2023  润新知