一、Tomcat
1. Tomcat概述
Tomcat也是一个Web应用程序,具有三大核心功能。
- Java Servlet:Tomcat是一个Servlet容器,负责管理和执行Java Servlet、服务端的Java程序,处理客户端的HTTP请求和响应。
- Java Server:服务端配置。
- Pages:基于Java代码完成的动态页面技术。
既可以作为Java代码为基础的动态页面,也可以处理和转发动态请求。但是Tomcat的并发能力差,适用于小项目。
Tomcat的核心组件:
- Web容器:处理Web请求。
- JSP容器:解析index.jsp中的Java代码,转为Servlet代码,然后由Servlet编译执行。JSP是一种技术模板,类似HTML,允许在HTML文件中嵌入Java代码。
- Servlet容器:接收Web容器的请求,负责加载、初始化、执行和管理。
Tomcat的功能组件:
-
Server:代表着整个Tomcat容器,包含着一个或者是多个Service组件。
-
Service:对外提供服务的组件,一个Server可以有多个Service组件,包含多个Connector组件和一个Engine组件。
-
Connector:接收客户端发送的请求。
-
Container:逻辑上的组件,包括Engine、Host、Context和Wrapps。
-
Engine:处理Connector接收的请求的组件,包含着一个或多个Host组件。
-
Host:代表着一个虚拟主机,可以理解为是一个站点,能够运行多个Web任务,包含着一个或者多个Context组件。
-
Context:虚拟主机运行的任务,也就是Web应用,管理者一个或者多个Wrapper组件。
-
Wrapper:最终的封装器,容器的最底层。
2. Tomcat安装
-
安装Java环境。
apt -y install openjdk-8-jdk-headless
-
解压Tomcat安装包。
tar -xf apache-tomcat-9.0.16.tar.gz mv apache-tomcat-9.0.16 /usr/local/tomcat
-
启动和关闭Tomcat。
cd /usr/local/tomcat/bin ./startup.sh ./shutdown.sh
二、Tomcat优化和动静分离
1. Tomcat优化
1.1 Tomcat配置优化
-
编辑Tomcat的配置文件/usr/local/tomcat/conf/server.xml,修改Connector组件标签的属性配置。
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" maxThreads="500" minSpareThreads="50" enableLookups="false" disableUploadTimeout="true" acceptCount="300" processorCache="500" URIEncoding="UTF-8" compression="on" compressionMiniSize="2048" compressionMimeType="text/html,text/xml,text/javascript,text/css,text/plain,image/gif,image /jpg,image/png" />
- port:指定连接器监听的端口号。
- protocol:指定连接器使用的协议。
- connectionTimeout:指定等待接受连接的超时时间,单位是毫秒。
- redirectPort:指定采用HTTPS协议的重定向端口。
- maxThreads:指定最大的工作线程数。
- minSpareThreads:指定保持活动的最小空闲线程数。
- enableLookups:指定是否启用DNS反向解析,设置为false表示禁用以提高访问速度。
- disableUploadTimeout:指定是否禁用上传超时,设置为true表示禁用。
- acceptCount:指定在所有工作线程都被占用时,可以排队等待的请求数
- processorCache:指定处理器缓存的大小。
- URIEncoding:指定URI的编码格式。
- compression:指定是否使用压缩功能。设置为on,表示使用压缩功能。
- compressionMiniSize:指定开始使用压缩功能的数据大小下限。
- compressionMimeType:指定可以被压缩的文件类型。
-
保存文件后,重新启动Tomcat。
cd /usr/local/tomcat/bin ./shutdown.sh ./startup.sh
1.2 内核优化
-
编辑/etc/sysctl.conf,写入相关配置。下面是部分常见的内核优化配置。
net.ipv4.ip_forward=0 #开启服务数据的路由功能 net.ipv4.tcp_syncookies = 1 #启动SYN cookies功能,避免tcp SYN的攻击 net.ipv4.tcp_max_tw_buckets = 6000 #系统中允许出现的最大的time_wait的数量 net.ipv4.tcp_tw_reuse = 1 启用TIME_WAIT套接字的重用 vm.overcommit_memory = 0: 控制内存超额分配策略,避免OOM killer杀掉进程。
- 更多配置参数可以执行命令 sysctl -a 进行查看。
-
保存文件后,执行下面的命令加载内核配置。
sysctl -p
1.3 JVM优化
-
编辑Tomcat安装目录中bin目录下的catalina.sh文件,在文件开头写入以下内容。
JAVA_OPTS="$JAVA_OPTS -server -Xms2048m -Xmx2048m -Xmn768m -XX:ParallelGCThreads=2 -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -Djava.awt.headless=true -XX:+DisableExplicitGC"
-
保存文件后,重新启动Tomcat。
cd /usr/local/tomcat/bin ./shutdown.sh ./startup.sh
2. Tomcat动静分离
-
编辑Nginx服务配置文件nginx.conf,设置反向代理,这里以七层反向代理为例。
upstream backend { server 192.168.1.129:8080; } location ~ \.jsp$ { proxy_pass http://backend; }
-
保存文件后,检查配置语法是否有误,并重启Nginx服务。
nginx -t systemctl restart nginx
-
在Tomcat安装目录下的webapps中创建一个test目录,编辑一个index.jsp文件。
cd /usr/local/tomcat/webapps mkdir test echo 123 > test/index.jsp
-
编辑conf目录下的server.xml文件,新增一个Context模块设置网页文件位置。
<Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="true" />
-
保存文件后,重新启动Tomcat。
cd /usr/local/tomcat/bin ./shutdown.sh ./startup.sh
-
访问该网页。
curl 192.168.1.128/index.jsp