Linux之Tomcat WEB核心摘要

发布于:2025-07-11 ⋅ 阅读:(15) ⋅ 点赞:(0)

一、Tomcat概念及其应用

1.理解Tomcat

  • Tomcat是一款开源免费的Web服务器,主要基于HTTP传输协议发布网页,提供网络信息服务,最终能让用户通过浏览器访问网站页面
  • Tomcat默认可以处理静态网页(Nginx、Apache),同时也可以动态网页请求JSP(Java Server Page)是基于Java语言开发的网路程序

2.Java、Tomcat、JDK之间关系

  • Java是一门面向对象的开发语言,JDK是Java语言开发所需的工具,同时也算是运行环境所必须的(JRE:jvm虚拟机+java类、库),而Tomcat是Java语言开发出来的
  • Java开发人员编写Java程序,可以借助Java工具javac对java源码进行编译得到子字节码件,最终jvm虚拟机去解析Java字节码,映射到cpu指令集或os系统调用

3.Tomcat部署流程

  • 由于Tomcat是基于java开发,所以在运行Tomcat之前,需要安装该程序所需的依赖环境
## 下载Jdk压缩包
ls -ld jdk-11.0.10_linux-x64_bin.tar.gz 
## 解压ya压缩包
tar -zxf jdk-11.0.10_linux-x64_bin.tar.gz;cd jdk-11.0.10
## 将解压的目录移动到/usr/local下
\mv jdk-11.0.10 /usr/local
## 将Jdk的bin目录加入环境变量(/etc/profile)
export PATH=$PATH:/usr/local/jdk-11.0.10/bin
echo 'export PATH=$PATH:/usr/local/jdk-11.0.10/bin' >> /etc/profile;source /etc/profile;
## 添加Java_Home环境
echo 'export JAVA_HOME=/usr/local/jdk-11.0.10/' >> /etc/profile;source /etc/profile;
## 验证环境
java --version
  • 部署Tomcat Web平台
## 下载Tomcat工具包
ls apache-tomcat-9.0.107.tar.gz 
## 解压工具包
tar -xzvf apache-tomcat-9.0.107.tar.gz 
##  将此目录移动目标目录,并重命名为Tomcat目录下
\mv apache-tomcat-9.0.107 /usr/local/tomcat/
## 查看是否部署成功
ls /usr/local/tomcat/
## 启动Tomcat服务进程
/usr/local/tomcat/bin/startup.sh 
## 查看进程状态
ps -ef | grep -aiE tomcat
## 查看监听端口
netstat -tnlp | grep -E "8005|8080|8009"   
##8005 Shutdown关闭服务 8080 HTTP协议远程端口 8009 Apache和Tomcat专属端口

测试:通过IP+端口进行访问,即可完成Tomcat Web平台部署

在企业生产环境,通常会给一台Tomcat服务器部署多个web实例,从而提高tomcat整体的性能

## 重命名第一个Tomcat实例为tomcat_v1
mv /usr/local/tomcat/ /usr/local/tomcat_v1/

## 将tomcat_v1实例拷贝一份命名为tomcat_v2
cp /usr/local/tomcat_v1 /usr/local/tomcat_v2/ -a

## 修改第二个tomcat端口(8006,8081)
vim  /usr/local/tomcat_v2/server.xml


## 重启两个tomcat服务进程
pkill java 
/usr/local/tomcat_v1/bin/startup.sh
/usr/local/tomcat_v2/bin/startup.sh


## 查看Tomcat集群监听端口情况
netstat -tnlp  | grep java

在企业生产提供环境tomcat 不会对外提供服务,而是引入了Nginx负载均衡器,这样让Nginx和Tomcat完美结合在一起发挥其作用。

基于Nginx负载均衡,反向代理的2个toimcat服务集群,只需在nginx服务配置文件中加入upstream、proxy_pass参数即可

出现了静态资源找不到的情况

find /usr/local/tomcat_v1/* -type f -name 'tomcat.css'
/usr/local/tomcat_v1/webapps/ROOT/tomcat.css

scp -r /usr/local/tomcat_v1/webapps/ROOT/ 10.0.0.5:/usr/share/nginx/html/

适当提高权限

chown nginx.nginx *

二、Tomact性能优化及其配置详解

1.分析server.xml配置文件

2.分析tomcat日志

/usr/local/tomcat_v1/bin/startup.sh;tail -fn 20 ../logs/catalina.out 

错误情况如下

解决报错后访问正常

3.tomcat连接器的选择

Tomcat连接器主要有三种运行方式bio、nio、apr三种方式

bio(阻塞式I/o操作):使用的是传统的I/O操作方法

nio(非阻塞式I/O操作):基于缓冲区提供的非阻塞式i/o操作并发运行性能

使用压力测试工具(如果无法使用ab工具需要根据yum provides ab安装httpd对应工具),测试各个连接器的性能

所使用的压测命令:ab -c 2000 -n 10000 http://10.0.0.6:8082/index.jsp

可以使用以下配置覆盖原发布目录

<Context path="/" docBase="/data/webapps/www"  reloadable="true"/>

压测工具使用注意事项

需要注意参数

  • NIO测试结果

要修改server.xml配置文件信息

<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
                    connectionTimeout="20000"
                    redirectPort="8443" />

  • apr测试结果

利用动态链接库,来处理静态文件,解决了大规模I/O处理问题

要修改server.xml配置文件信息

<Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol"
                connectionTimeout="20000"
                redirectPort="8443" />

修改后无法正常启动即需要安装apr和native找到符合apr运行的环境

## 安装apr库包环境
yum -y install apr apr-devel
## 安装native 
cd /usr/local/tomcat_v3/bin/
## 解压tomcat-native.tar.gz安装包
tar -zxvf tomcat-native.tar.gz
## 进入运行环境进行预编译操作
cd native;
./configure --with-apr=/usr/bin/apr-1-config
make && make install
## 验证编译生成的库文件
ls -ld /usr/local/apr/lib


## 加入该配置到环境变量
vim /etc/profile
export CATALINA_OPTS="-Djava.library.path=/usr/local/apr/lib" 
source /etc/profile

4.Jvm虚拟机

Jvm虚拟机包括处理器、堆、栈、寄存器、主要是将字节码文件映射到cpu指令集或os进行系统调用

  • 堆:所有new出来的对象都会在堆中分配,堆的大小可以通过-Xmx和-Xms来控制【java出现了内存溢出情况】,堆可以被分为新生代和旧生代,所谓新生代接口新建的对象分配到内存那一部分,而旧生代则是被垃圾回收器回收但仍然存活的那一部分,持久代则是存放已加载的类信息、方法信息、常量池,可通过-XX:PermSize和-XX:MaxPermSize来设置其初始值和最大值

若想使用客户端监控栈、堆、内存使用情况,可以加入如下配置定义10000端口

-Djava.rmi.server.hostname=10.0.0.6 -Dcom.sun.management.jmxremote.port=10000 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false

配置文件内容如下:
CATALINA_OPTS="-Xms512M -Xmx1024M -Djava.library.path=/usr/local/apr/lib -Djava.rmi.server.hostname=10.0.0.6 -Dcom.sun.management.jmxremote.port=10000 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"


网站公告

今日签到

点亮在社区的每一天
去签到