tomcat 入门-爱代码爱编程
文章目录
1.版本问题
tomcat 8或8.5 配合使用 7.0以上版本JDK
Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个servelet容器,按照Sun microsystems提供的技术规范开发出来,Tomcat 8实现了对servlet 3.1和Javaserver page 2.3(JSP)的支持,并提供了作为web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat附加组件等
2.tomcat 安装
1).构建Java环境
[root@tomcat ~]# tar xf jdk-8u60-linux-x64.tar.gz
[root@tomcat ~]# mv jdk1.8.0_60/ /usr/local/java8
[root@tomcat ~]# vim /etc/profile.d/java.sh
[root@tomcat ~]# cat /etc/profile.d/java.sh
JAVA_HOME=/usr/local/java8
CLASSPATH=$JAVA_HOME/lib
PATH=$PATH:$JAVA_HOME/bin
[root@tomcat ~]# source /etc/profile
[root@tomcat ~]# java -version
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
2).安装tomcat
[root@tomcat ~]# tar xf apache-tomcat-8.5.16.tar.gz
[root@tomcat ~]# mv apache-tomcat-8.5.16 /usr/local/tomcat
启动并测试
[root@tomcat ~]# /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/java8
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
访问ip时加上8080端口
3.tomcat架构
1).架构图
一个tomcat只有一个server,一个server包含多个service,一个service包含两个核心组件(连接器,容器)连接器可以有多个,容器只有一个。
连接器:connector 处理连接相关的事情,并提供Socket与Request和Response相关的转化
容器:contaioner 封装和管理Servlet,以及具体处理Request请求
整个tomcat生命周期由server控制。
2).connector 结构
3).container 结构
host:站点 context:应用程序 wrapper:封装servlet
4).container 处理流程:pipeline—value管道处理。
4.connector 运行模式
(无NIO2)----8.0----(BIO,NIO,NIO2/AIO,APR)----8.5----(无BIO)—
*
BIO:同步阻塞
*
NIO:同步非阻塞
*
NIO2/AIO:异步非阻塞
*
tomcat 默认使用 NIO 通过 grep -i handler catalina.out 查看 (/usr/local/tomcat/log/)
在浏览器三个按键查看也可以。
使用按键需要修改配置文件。
vim /usr/local/tomcat/conf/tomcat-users.xml
<role rolename="manager-gui"/> //对应第二个按钮权限
<role rolename="admin-gui"/> //对应第三个按钮权限
<user username="tomcat" password="tomcat" roles="tomcat,manager-gui,admin-gui"/>
8.5 版本 出现403修改方法
/usr/local/tomcat/conf/Catalina/localhost/manager.xml和/usr/local/tomcat/conf/Catalina/localhost/host-manager.xml 中分别加入以下内容,分别对应
<?xml version="1.0" encoding="UTF-8"?>
<Context privileged="true" antiResourceLocking="false"
docBase="${catalina.home}/webapps/manager">
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
</Context>
重启服务
cd /usr/local/tomcat/bin/startup.sh
5.JVM
JVM某种程度上可以被认为是一个虚拟的操作系统,它有着自己的内存模型等;一个Tomcat容器的启动,相当于在JVM中启动了一个进程。
堆是虚拟机管理内存的最大一块,也是被所有线程共享的内存区域。
当内存不足无法完成实例分配的时候,同时推也无法扩展的时会出现OOM除了程序计数器,都会出现oom(out of memory) 内存溢出。
内存问题,造成主页缺失,次页缺失。
解决方法:修改/usr/local/tomcat/bin/catalina.shJAVA_OPTS=" -server -Xms512m -Xmx512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m"
说明:
Xms 堆内存的初始大小,取决于物理内存,通常一半
Xmx 堆内存上限,取决于物理内存,通常一半
XX:MetaspaceSize:非堆内存初始大小
XX:MaxMeatespaceSize 非堆内存上限
6.内存泄漏
不用的内存没被释放 内存泄漏 >>> 垃圾回收(gc)回收不到 >>> 占用pid,线程多 >>> tomcat远程连接不上 (用jstack查看解决)
7.nginx 做负载均衡轮询tomcat配置
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/qq_39109226/article/details/111107273