目录
Tomcat 部署及优化
1.1 概述
- Java语言开发的一款开放源代码的、免费的web应用服务程序
- 轻量级应用服务器,中小型系统和并发访问用户不是很多的场合下普通使用
作用:
- 可以作为web应用服务器,处理静态web页面,如html页面,但性能一般
- 还可以作为Servlet/JSP容器,运行在后端,处理java语言开发的jsp动态页面应用程序,这也是tomcat主要的应用场景
1.2 Tomcat 核心组件
- Web 容器:完成Web服务器的功能
- Servlet 容器:名字为 catalina,用于处理 Servlet 代码
- JSP 容器:用于将 JSP 动态网页翻译成 Servlet 代码
1.2.1 什么是Servlet?(JSP代码进行解释、转换、运行)
- Servlet 是Java Servlet 的简称,可以理解为是一个服务连接器,是用 Java 编写的服务器端程序,具有独立于平台和协议的特性,简单的理解: servlet就是一个中间件,包含了接口和方法,将客户端和数据库连接,从而实现动态网页的创建。
1.2.2 什么是 JSP?(动态页面实现)
- JSP 全称 Java Server Pages,是一种动态网页开发技术。它使用 JSP 标签在HML网页中插 Java 代码。标签通常以 <% 开头,以 %> 结束。
- JSP是一种 Java servlet,主要用于实现 Java web 应用程序的用户界面部分。
- JSP 通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。
1.3 Tomcat 功能组件结构
-
Connector连接器:暴露监听端口,接收客户端发来的请求和返回响应消息给客户端
-
Container容器:负责处理用户请求的业务逻辑。由四个子容器组成(Engine、Host、Context、Wrapper),子容器之间是父子关系
- Engine:引擎,管理多个虚拟主机,一个Service最多一个Engine
- Host:代表一个虚拟主机
- Context:管理web应用的路径
- Wrapper:servlet封装器,负责处理业务逻辑
1.4 Tomcat 处理请求过程
客户端请求过程:
- 客户端浏览器 —> connector暴露的8080端口
- —> container(engine)根据域名发送给对应的虚拟主机
- —> host 根据用户访问的URL路径
- —> context 根据URL路径对应的web应用
- —> wrapper 根据应用程序处理业务逻辑
1.5 Tomcat 多实例部署
在部署 Tomcat 之前必须安装好 jdk,因为 jdk 是 Tomcat 运行的必要环境。
1.关闭防火墙,将安装 Tomcat 所需软件包传到/opt目录下
jdk-8u201-linux-x64.rpm
apache-tomcat-9.0.16.tar.gz
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
2.安装JDK
cd /opt
rpm -qpl jdk-8u201-linux-x64.rpm
rpm -ivh jdk-8u201-linux-x64.rpm
java -version
3.设置JDK环境变量
vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
source /etc/profile.d/java.sh
java -version
4.安装启动Tomcat
cd /opt
tar zxvf apache-tomcat-9.0.16.tar.gz
mv apache-tomcat-9.0.16 /usr/local/tomcat
##启动tomcat ##
#后台启动
/usr/local/tomcat/bin/startup.sh
netstat -natp | grep 8080
vim /usr/lib/systemd/system/tomcat.service
[Unit]
Description=tomcat server
Wants=network-online.target
After=network.target
[Service]
Type=forking
Environment="JAVA_HOME=/usr/java/jdk1.8.0_201-amd64"
Environment="PATH=$JAVA_HOME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
Environment="CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar"
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
5.浏览器访问Tomcat的默认主页 http://192.168.8.100:8080
1.6 Tomcat 优化
tomcat优化:
- 配置文件优化
maxThreads(最大线程数/并发)
processorCache(进程缓冲)
accecptCount(等待队列数)
enableLookups(关闭DNS反向解析)
URIEncoding(网页字符集编码UTF-8)
maxKeepAliveRequests(长连接最大请求数)
connectionTimeout(连接超时时间)
compression(开启页面压缩)
- 系统内核优化
vim /etc/security/limits.conf
nofile、nproc、memlock
vim /etc/sysctl.conf
net.ipv4.tcp_syncookies= 1
net.ipv4.tcp_tw reuse= 1
net.ipv4.tcp_tw_recycle= 1
net.ipv4.tcp fin timeout= 30
net.ipv4.tcp keepalive time= 1200
net.ipv4.ip_local_port_range= 1024 65535
net.ipv4.tcp_max_syn backlog= 8192
net.ipv4.tcp max tw buckets= 5000
- JVM优化
在 catalina.sh 中设置 JAVA_OPTS 参数
JAVA OPTS="$JAVA OPTS -server -Xms2048m -Xmx2048m -XX:PermSize=1024m -XX:MaxPermSize=1024m -Xmn768m"
-server #表示启用JDK的Server模式,实现在多核服务器性能更佳
-Xms2048m -Xmx2048m #设置JVM堆内存初始值和最大值一样大,一般设置为物理内存的1/2
-XX:PermSize=1024m -XX:MaxPermSize=1024m #设置永久代(非堆内存)初始值和最大值一样大,一般设置为物理内存的1/4
初始值和最大值设置一样大的原因:可以减少GC次数和内存伸缩带来的频繁内存申请,从而减少一定的系统开销。
-Xmn #设置JVM堆内存新生代的大小,一般设置为堆内存的3/8
-XX:ParallelGCThreads=2 #设置并行GC(垃圾回收)线程数,提高垃圾回收效率
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/local/tomcat/temp/oom.hprof
#设置进程发生OOM异常退出会进行DUMP备份
-XX:+DisableExplicitGC #禁止调用System.gc()方法,防止误调用系统gc方法导致系统的JVM堆内存大起大落而使系统响应效率严重降低
标签:JAVA,Tomcat,tomcat,部署,JSP,usr,HOME,优化
From: https://www.cnblogs.com/LJ69/p/17688942.html