沧州南皮网站建设,郑州做网站云极,计算机网站的开发流程,网站开发字体的引用目录
一、tomcat 服务的目录结构解析#xff1a;
1、tomcat目录结构#xff1a; bin目录#xff1a;
conf目录#xff1a;
lib目录#xff1a;
logs目录#xff1a;
temp目录#xff1a;
webapps目录#xff1a;
wokr目录#xff1a;
二、tomcat服务的运行模…目录
一、tomcat 服务的目录结构解析
1、tomcat目录结构 bin目录
conf目录
lib目录
logs目录
temp目录
webapps目录
wokr目录
二、tomcat服务的运行模式
三种运行模式适用场景
BIO NIO APR的模式介绍
tomcat的三种运行模式的特征
查看当前的tomcat处于哪个运行模式 tomcat的运行模式设置为NIO模式
tomcat的运行模式设置为APR模式
1. 安装apr服务和相关的依赖包
安装apr
安装apr-iconv 安装apr-util
2. 安装tomcat-native
3.设置apr的环境变量
4.修改tomcat的server.xml为apr运行模式
5.验证tomcat当前运行模式
总结 一、tomcat 服务的目录结构解析 Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器属于轻量级应用服务器在中小型系统和并发访问用户不是很多的场合下被普遍使用是开发和调试 JSP 程序的首选。所以作为运维人员十分有必要了解Tomcat目录结构组成。 1、tomcat目录结构 tomcat的目录主要有bin、conf、lib、logs、temp、webapps、work目录组成的每一个目录的作用和用法都是不一样的。 tomcat的tar.gz包解压后的目录结构如下 [rootVM-8-10-centos tomcat8]# ll
total 112
drwxr-xr-x 2 root root 4096 Feb 22 16:17 bin
drwxr-xr-x 2 root root 4096 May 19 2015 conf
drwxr-xr-x 2 root root 4096 Feb 22 16:17 lib
-rw-r--r-- 1 root root 56977 May 19 2015 LICENSE
drwxr-xr-x 2 root root 4096 May 19 2015 logs
-rw-r--r-- 1 root root 1397 May 19 2015 NOTICE
-rw-r--r-- 1 root root 6741 May 19 2015 RELEASE-NOTES
-rw-r--r-- 1 root root 16204 May 19 2015 RUNNING.txt
drwxr-xr-x 2 root root 4096 Feb 22 16:17 temp
drwxr-xr-x 7 root root 4096 May 19 2015 webapps
drwxr-xr-x 2 root root 4096 May 19 2015 work bin目录 bin目录主要是用来存放tomcat的命令主要有两大类一类是以.sh结尾的linux命令另一类是以.bat结尾的windows命令。很多环境变量的设置都在此处例如可以设置JDK路径、tomcat路径. [rootVM-8-10-centos bin]# ls
bootstrap.jar catalina-tasks.xml configtest.bat digest.bat setclasspath.sh startup.bat tomcat-native.tar.gz version.bat
catalina.bat commons-daemon.jar configtest.sh digest.sh shutdown.bat startup.sh tool-wrapper.bat version.sh
catalina.sh commons-daemon-native.tar.gz daemon.sh setclasspath.bat shutdown.sh tomcat-juli.jar tool-wrapper.sh 创建需要使用的文件如下 startup.sh 用来启动tomcat服务 shutdown.sh 用来关闭tomcat服务 修改catalina.sh的JAVA_OPTS参数可以设置tomcat的内存 conf目录 conf目录主要是用来存放tomcat的一些配置文件。 [rootVM-8-10-centos conf]# ll
total 216
drwxr-xr-x 3 root root 4096 Feb 22 17:02 Catalina
-rw------- 1 root root 12374 May 19 2015 catalina.policy
-rw------- 1 root root 7086 May 19 2015 catalina.properties
-rw------- 1 root root 1577 May 19 2015 context.xml
-rw------- 1 root root 3387 May 19 2015 logging.properties
-rw------- 1 root root 6458 May 19 2015 server.xml
-rw------- 1 root root 1744 May 19 2015 tomcat-users.xml
-rw------- 1 root root 1846 May 19 2015 tomcat-users.xsd
-rw------- 1 root root 166582 May 19 2015 web.xml server.xml 是tomcat主配置文件可以设置tomcat的端口号、设置域名或IP、默认加载的项目、请求编码、tomcat的运行模式等 web.xml 是设置tomcat支持的文件类型 context.xml 可以用来配置数据源之类的 catalina.properties 配置文件是Tomcat环境变量配置 catalina.policy 当 Tomcat在安全模式下运行时此文件为默认的安全策略配置 logging.properties 是Tomcat日志配置文件可通过该文件修改 Tomcat日志级别以及日志路径等 tomcat-users.xml 用来配置管理tomcat控制台的用户与权限 在Catalina目录下可以设置默认加载的项目 lib目录 lib目录主要用来存放tomcat运行需要加载的jar包 [rootVM-8-10-centos lib]# ll
total 7184
-rw-r--r-- 1 root root 17352 May 19 2015 annotations-api.jar
-rw-r--r-- 1 root root 52574 May 19 2015 catalina-ant.jar
-rw-r--r-- 1 root root 119852 May 19 2015 catalina-ha.jar
-rw-r--r-- 1 root root 1534530 May 19 2015 catalina.jar
-rw-r--r-- 1 root root 74630 May 19 2015 catalina-storeconfig.jar
-rw-r--r-- 1 root root 256011 May 19 2015 catalina-tribes.jar
-rw-r--r-- 1 root root 2310271 May 19 2015 ecj-4.4.2.jar
-rw-r--r-- 1 root root 81457 May 19 2015 el-api.jar
-rw-r--r-- 1 root root 161353 May 19 2015 jasper-el.jar
-rw-r--r-- 1 root root 581401 May 19 2015 jasper.jar
-rw-r--r-- 1 root root 61417 May 19 2015 jsp-api.jar
-rw-r--r-- 1 root root 244249 May 19 2015 servlet-api.jar
-rw-r--r-- 1 root root 8973 May 19 2015 tomcat-api.jar
-rw-r--r-- 1 root root 701433 May 19 2015 tomcat-coyote.jar
-rw-r--r-- 1 root root 237251 May 19 2015 tomcat-dbcp.jar
-rw-r--r-- 1 root root 67973 May 19 2015 tomcat-i18n-es.jar
-rw-r--r-- 1 root root 41471 May 19 2015 tomcat-i18n-fr.jar
-rw-r--r-- 1 root root 43588 May 19 2015 tomcat-i18n-ja.jar
-rw-r--r-- 1 root root 134056 May 19 2015 tomcat-jdbc.jar
-rw-r--r-- 1 root root 31461 May 19 2015 tomcat-jni.jar
-rw-r--r-- 1 root root 103243 May 19 2015 tomcat-util.jar
-rw-r--r-- 1 root root 198014 May 19 2015 tomcat-util-scan.jar
-rw-r--r-- 1 root root 211699 May 19 2015 tomcat-websocket.jar
-rw-r--r-- 1 root root 36603 May 19 2015 websocket-api.jar 例如像连接数据库的jdbc的包我们可以加入到lib目录中来 logs目录 logs目录用来存放tomcat在运行过程中产生的日志文件非常重要的是在控制台输出的日志。清空不会对tomcat运行带来影响 在windows环境中控制台的输出日志在catalina.xxxx-xx-xx.log文件中 在linux环境中控制台的输出日志在catalina.out文件中 一般情况tomcat作为java运行中间件服务都会设置生成业务的日志文件以便进行业务日志的分析 [rootVM-8-10-centos logs]# ll
total 20
-rw-r--r-- 1 root root 5849 Feb 22 17:02 catalina.2023-02-22.log
-rw-r--r-- 1 root root 5849 Feb 22 17:02 catalina.out
-rw-r--r-- 1 root root 0 Feb 22 17:02 host-manager.2023-02-22.log
-rw-r--r-- 1 root root 280 Feb 22 17:02 localhost.2023-02-22.log
-rw-r--r-- 1 root root 0 Feb 22 17:02 localhost_access_log.2023-02-22.txt
-rw-r--r-- 1 root root 0 Feb 22 17:02 manager.2023-02-22.log temp目录 temp目录用户存放tomcat在运行过程中产生的临时文件。清空不会对tomcat运行带来影响。 [rootVM-8-10-centos temp]# ll
total 0
-rw-r--r-- 1 root root 0 May 19 2015 safeToDelete.tmp
webapps目录 webapps目录用来存放应用程序当tomcat启动时会去加载webapps目录下的应用程序。可以以文件夹、war包、jar包的形式发布应用常见的是war包的形式tomcat服务支持自动解压war包。 当然你也可以把应用程序放置在磁盘的任意位置在配置文件中映射好就行。 [rootVM-8-10-centos webapps]# ll
total 20
drwxr-xr-x 14 root root 4096 Feb 22 16:17 docs
drwxr-xr-x 6 root root 4096 Feb 22 16:17 examples
drwxr-xr-x 5 root root 4096 Feb 22 16:17 host-manager
drwxr-xr-x 5 root root 4096 Feb 22 16:17 manager
drwxr-xr-x 3 root root 4096 Feb 22 16:17 ROOT wokr目录 work目录用来存放tomcat在运行时的编译后文件例如JSP编译后的文件。 [rootVM-8-10-centos work]# ll
total 4
drwxr-xr-x 3 root root 4096 Feb 22 17:02 Catalina 运维常见使用该目录的场景为清理tomcat的缓存 注清空work目录然后重启tomcat可以达到清除缓存的作用。 二、tomcat服务的运行模式 tomcat的运行模式主要有三种分别是BIO、NIO和APR。 三种运行模式适用场景 BIO适用连接数较小且固定的架构这种方式对服务器资源要求比较高并发局限于应用中。NIO适用于连接数目多且连接比较短轻操作的架构比如聊天服务器并发局限于应用中编程比较复杂。APR适用于连接数目多且连接比较长重操作的架构比如相册服务器充分调用OS参与并发操作编程比较复杂。BIO NIO APR的模式介绍 BIOblocking I/O阻塞式I/O操作表示Tomcat使用的是传统的Java I/O操作(即java.io包及其子包)。Tomcat在默认情况下就是以bio模式运行的。遗憾的是就一般而言bio模式是三种运行模式中性能最低的一种。我们可以通过Tomcat Manager来查看服务器的当前状态。NIO是Java SE 1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包)。Java nio是一个基于缓冲区、并能提供非阻塞I/O操作的Java API因此nio也被看成是non-blocking I/O的缩写。它拥有比传统I/O操作(bio)更好的并发运行性能APR(Apache Portable Runtime/Apache可移植运行库)是Apache HTTP服务器的支持库。你可以简单地理解为Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作从而大大地提高Tomcat对静态文件的处理性能。 Tomcat apr也是在Tomcat上运行高并发应用的首选模式。tomcat的三种运行模式的特征
模式默认运行版本处理方式BIO运行模式Tomcat7或以下版本一个线程处理一个请求缺点并发量高是线程数较多浪费资源NIO运行模式Tomcat8版本利用Java的异步IO处理可通过少量的线程处理大量请求APR运行模式Tomcat7 或 8 在win7或以上系统中默认使用从操作系统层面解决IO阻塞问题
查看当前的tomcat处于哪个运行模式
Tomcat服务启动时可以通过 catalina.out的运行日志查看tomcat使用的是哪种运行模式
[rootVM-8-10-centos logs]# cat catalina.out | grep http-bio-8080
Starting ProtocolHandler [http-bio-8080] ## BIO模式 [rootVM-8-10-centos logs]# cat catalina.out | grep http-nio-8080
Starting ProtocolHandler [http-nio-8080] ## NIO模式 [rootVM-8-10-centos logs]# cat catalina.out | grep http-apr-8080
Starting ProtocolHandler [http-apr-8080] ## APR模式 注 自Tomcat 8.5 版本开始Tomcat就移除了对BIO的支持 tomcat的运行模式设置为NIO模式 NIO是利用java的异步io护理技术,noblocking IO技术。要想运行在该模式下则直接修改server.xml里的Connector节点,修改protocol为如下配置 ........ Connector executortomcatThreadPoolport8080 protocolorg.apache.coyote.http11.Http11NioProtocolconnectionTimeout20000redirectPort8443 /...... Connector port8009 protocolorg.apache.coyote.http11.Http11NioProtocol redirectPort8443 /
....... 注这里是将tomcat提供服务的端口和与其他http服务器通信接口都修改为NIO运行模式。 tomcat的运行模式设置为APR模式 tomcat要运行APR运行模式需要安装apr服务和tomcat-native服务可以能支持的。并且目前默认的是tomcat8.是自带了tomcat-native包的。 [rootVM-8-10-centos bin]# ls
bootstrap.jar catalina-tasks.xml configtest.bat digest.bat setclasspath.sh startup.bat tomcat-native.tar.gz version.bat
catalina.bat commons-daemon.jar configtest.sh digest.sh shutdown.bat startup.sh tool-wrapper.bat version.sh
catalina.sh commons-daemon-native.tar.gz daemon.sh setclasspath.bat shutdown.sh tomcat-juli.jar tool-wrapper.sh
启用APR运行模式部署过程如下 这里是以tomcat-8.5.85版本为例的。 1. 安装apr服务和相关的依赖包
[rootVM-8-10-centos app ]# ll *.tar.gz
-rw-r--r-- 1 root root 1115676 Feb 22 20:44 apr-1.7.2.tar.gz
-rw-r--r-- 1 root root 1248250 Feb 22 20:44 apr-iconv-1.2.2.tar.gz
-rw-r--r-- 1 root root 556623 Feb 22 20:44 apr-util-1.6.3.tar.gz
[rootVM-8-10-centos app ]# yum install cmake gcc expat-devel
..............
安装apr 安装apr [rootVM-8-10-centos app]# tar -zxvf apr-1.7.2.tar.gz
........... 编译apr [rootVM-8-10-centos app]# cd apr-1.7.2
[rootVM-8-10-centos apr-1.7.2]# ./configure --prefix/usr/local/apr
................
.................
config.status: creating apr.pc
config.status: creating test/Makefile
config.status: creating test/internal/Makefile
config.status: creating include/arch/unix/apr_private.h
config.status: executing libtool commands
rm: cannot remove libtoolT: No such file or directory
config.status: executing default commands
config.status: include/apr.h is unchanged
config.status: include/arch/unix/apr_private.h is unchanged [rootVM-8-10-centos apr-1.7.2]# make make install
..........
..........
/bin/install -c -m 755 /app/apr-1.7.2/build/mkdir.sh /usr/local/apr/build-1
for f in make_exports.awk make_var_export.awk; do \/bin/install -c -m 644 /app/apr-1.7.2/build/${f} /usr/local/apr/build-1; \
done
/bin/install -c -m 644 build/apr_rules.out /usr/local/apr/build-1/apr_rules.mk
/bin/install -c -m 755 apr-config.out /usr/local/apr/bin/apr-1-config 安装apr-iconv
[rootVM-8-10-centos app]# cd apr-iconv-1.2.2/
[rootVM-8-10-centos apr-iconv-1.2.2]# ./configure --prefix/usr/local/apr-iconv --with-apr/usr/local/apr
........
config.status: creating lib/Makefile
config.status: creating util/Makefile
config.status: creating lib/apr_iconv_private.h
[rootVM-8-10-centos apr-iconv-1.2.2]# make make install
...............
...............
mkdir /usr/local/apr-iconv/include
mkdir /usr/local/apr-iconv/include/apr-1
/bin/install -c -m 644 /app/apr-iconv-1.2.2/include/api_version.h /usr/local/apr-iconv/include/apr-1
/bin/install -c -m 644 /app/apr-iconv-1.2.2/include/apr_iconv.h /usr/local/apr-iconv/include/apr-1
if [ ! -d /usr/local/apr-iconv/bin ]; then \/app/apr-iconv-1.2.2/build/mkdir.sh /usr/local/apr-iconv/bin; \
fi; \
(cd util; /bin/sh /usr/local/apr/build-1/libtool --modeinstall cp apriconv /usr/local/apr-iconv/bin)
mkdir /usr/local/apr-iconv/bin
libtool: install: cp .libs/apriconv /usr/local/apr-iconv/bin/apriconv 安装apr-util
[rootVM-8-10-centos app]# cd apr-util-1.6.3/
[rootVM-8-10-centos apr-util-1.6.3]# ./configure --prefix/usr/local/apr-util --with-apr/usr/local/apr --with-apr-iconv/usr/local/apr-iconv/bin/apriconv
.......
config.status: creating include/apu_want.h
config.status: creating test/Makefile
config.status: creating include/private/apu_config.h
config.status: include/private/apu_config.h is unchanged
config.status: executing default commands
[rootVM-8-10-centos apr-util-1.6.3]# make make install
.......
libtool: install: (cd /usr/local/apr-util/lib { ln -s -f libaprutil-1.so.0.6.3 libaprutil-1.so || { rm -f libaprutil-1.so ln -s libaprutil-1.so.0.6.3 libaprutil-1.so; }; })
libtool: install: /bin/install -c -m 755 .libs/libaprutil-1.lai /usr/local/apr-util/lib/libaprutil-1.la
libtool: install: /bin/install -c -m 755 .libs/libaprutil-1.a /usr/local/apr-util/lib/libaprutil-1.a
libtool: install: chmod 644 /usr/local/apr-util/lib/libaprutil-1.a
libtool: install: ranlib /usr/local/apr-util/lib/libaprutil-1.a
libtool: warning: remember to run libtool --finish /app/apr-util/lib
/bin/install -c -m 644 aprutil.exp /usr/local/apr-util/lib
/bin/install -c -m 755 apu-config.out /usr/local/apr-util/bin/apu-1-config 2. 安装tomcat-native [rootVM-8-10-centos bin]# pwd /app/apache-tomcat-8.5.85/bin [rootVM-8-10-centos bin]# tar -zxvf tomcat-native.tar.gz ........... [rootVM-8-10-centos bin]# cd tomcat-native-1.2.35-src/native [rootVM-8-10-centos native]# pwd /app/apache-tomcat-8.5.85/bin/tomcat-native-1.2.35-src/native [rootVM-8-10-centos native]# ./configure --with-apr/usr/local/apr/ --with-java-home/app/java/jdk1.8.0_171/
............
...........
checking for apr_pollset_wakeup in -lapr-1... no
cp: cannot stat /apr_rules.mk: No such file or directory
configure: creating ./config.status
config.status: creating Makefile
config.status: executing default commands
[rootVM-8-10-centos native]# make make install
........
.......
----------------------------------------------------------------------
Libraries have been installed in:/usr/local/apr/libIf you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the -LLIBDIR
flag during linking and do at least one of the following:- add LIBDIR to the LD_LIBRARY_PATH environment variableduring execution- add LIBDIR to the LD_RUN_PATH environment variableduring linking- use the -Wl,-rpath -Wl,LIBDIR linker flag- have your system administrator add LIBDIR to /etc/ld.so.confSee any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
---------------------------------------------------------------------- 注显示如上表示已经安装完成了。 3.设置apr的环境变量 [rootVM-8-10-centos app]# vim /etc/profile 添加如下的内容 #apr export LD_LIBRARY_PATH/usr/local/apr/lib [rootVM-8-10-centos app]# source /etc/profile 4.修改tomcat的server.xml为apr运行模式 修改Tomcat 下 conf/server.xml protocol的值 HTTP/1.1为org.apache.coyote.http11.Http11AprProtocol Connector port8080 protocolorg.apache.coyote.http11.Http11AprProtocolconnectionTimeout20000redirectPort8443 / 修改SSLEngine 为off Listener classNameorg.apache.catalina.core.AprLifecycleListener SSLEngineoff /
启动tomcat服务
[rootVM-8-10-centos conf]# cd ../bin/
[rootVM-8-10-centos bin]# ./startup.sh
Using CATALINA_BASE: /app/apache-tomcat-8.5.85
Using CATALINA_HOME: /app/apache-tomcat-8.5.85
Using CATALINA_TMPDIR: /app/apache-tomcat-8.5.85/temp
Using JRE_HOME: /app/java/jdk1.8.0_171/jre
Using CLASSPATH: /app/apache-tomcat-8.5.85/bin/bootstrap.jar:/app/apache-tomcat-8.5.85/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
[rootVM-8-10-centos bin]# ps -ef | grep java
root 15830 1 64 16:05 pts/10 00:00:02 /app/java/jdk1.8.0_171/jre/bin/java -Djava.util.logging.config.file/app/apache-tomcat-8.5.85/conf/logging.properties -Djava.util.logging.managerorg.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize2048 -Djava.protocol.handler.pkgsorg.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK0027 -Dignore.endorsed.dirs -classpath /app/apache-tomcat-8.5.85/bin/bootstrap.jar:/app/apache-tomcat-8.5.85/bin/tomcat-juli.jar -Dcatalina.base/app/apache-tomcat-8.5.85 -Dcatalina.home/app/apache-tomcat-8.5.85 -Djava.io.tmpdir/app/apache-tomcat-8.5.85/temp org.apache.catalina.startup.Bootstrap start
root 15892 5766 0 16:05 pts/10 00:00:00 grep --colorauto java
[rootVM-8-10-centos bin]# netstat -anlp | grep java
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 15830/java
tcp6 0 0 :::8080 :::* LISTEN 15830/java
unix 2 [ ] STREAM CONNECTED 1700819 15830/java 5.验证tomcat当前运行模式 [rootVM-8-10-centos bin]# cd ../logs/ [rootVM-8-10-centos logs]# tail -100f catalina.out 23-Feb-2023 16:05:55.857 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name: Apache Tomcat/8.5.85
23-Feb-2023 16:05:55.860 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built: Jan 11 2023 00:09:15 UTC
23-Feb-2023 16:05:55.860 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 8.5.85.0
23-Feb-2023 16:05:55.860 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name: Linux
23-Feb-2023 16:05:55.860 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version: 3.10.0-1160.71.1.el7.x86_64
23-Feb-2023 16:05:55.860 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture: amd64
23-Feb-2023 16:05:55.860 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home: /app/java/jdk1.8.0_171/jre
23-Feb-2023 16:05:55.860 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version: 1.8.0_171-b11
23-Feb-2023 16:05:55.860 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor: Oracle Corporation
23-Feb-2023 16:05:55.861 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: /app/apache-tomcat-8.5.85
23-Feb-2023 16:05:55.861 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: /app/apache-tomcat-8.5.85
23-Feb-2023 16:05:55.861 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file/app/apache-tomcat-8.5.85/conf/logging.properties
23-Feb-2023 16:05:55.861 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.managerorg.apache.juli.ClassLoaderLogManager
23-Feb-2023 16:05:55.861 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize2048
23-Feb-2023 16:05:55.861 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgsorg.apache.catalina.webresources
23-Feb-2023 16:05:55.861 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dorg.apache.catalina.security.SecurityListener.UMASK0027
23-Feb-2023 16:05:55.861 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs
23-Feb-2023 16:05:55.861 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base/app/apache-tomcat-8.5.85
23-Feb-2023 16:05:55.862 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home/app/apache-tomcat-8.5.85
23-Feb-2023 16:05:55.862 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir/app/apache-tomcat-8.5.85/temp
23-Feb-2023 16:05:55.862 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded Apache Tomcat Native library [1.2.35] using APR version [1.7.2].
23-Feb-2023 16:05:55.862 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true], UDS [{4}].
23-Feb-2023 16:05:55.862 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
23-Feb-2023 16:05:55.993 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler [http-apr-8080]
23-Feb-2023 16:05:56.030 INFO [main] org.apache.catalina.startup.Catalina.load Initialization processed in 608 ms
23-Feb-2023 16:05:56.060 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
23-Feb-2023 16:05:56.060 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/8.5.85]
23-Feb-2023 16:05:56.071 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/app/apache-tomcat-8.5.85/webapps/docs]
23-Feb-2023 16:05:56.323 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/app/apache-tomcat-8.5.85/webapps/docs] has finished in [250] ms
23-Feb-2023 16:05:56.323 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/app/apache-tomcat-8.5.85/webapps/examples]
23-Feb-2023 16:05:56.536 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/app/apache-tomcat-8.5.85/webapps/examples] has finished in [213] ms
23-Feb-2023 16:05:56.536 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/app/apache-tomcat-8.5.85/webapps/host-manager]
23-Feb-2023 16:05:56.561 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/app/apache-tomcat-8.5.85/webapps/host-manager] has finished in [25] ms
23-Feb-2023 16:05:56.562 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/app/apache-tomcat-8.5.85/webapps/manager]
23-Feb-2023 16:05:56.581 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/app/apache-tomcat-8.5.85/webapps/manager] has finished in [19] ms
23-Feb-2023 16:05:56.581 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/app/apache-tomcat-8.5.85/webapps/ROOT]
23-Feb-2023 16:05:56.592 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/app/apache-tomcat-8.5.85/webapps/ROOT] has finished in [11] ms
23-Feb-2023 16:05:56.594 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [http-apr-8080]
23-Feb-2023 16:05:56.617 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 586 ms tomcat的运行日志文件catalina.out有看到[http-apr-8080]表示tomcat的运行模式出于APR模式下. 总结 个人觉得在tomcat bio、nio、apr模式中每种都会有各自适用的场合apr其实也是nio只不过他是操作系统级别的支持nio是由java本身的nio支持的 也不能说哪个好那个不好。就像tomcat内存方面的配置如果内存设置的过大gc垃圾回收机制就会变慢如果内存设置的过小tomcat又会出现内存溢出的情况 所以设置在一个合适的范围很重要不仅不会出错并且gc回收频繁使性能达到一个最优的结果。当然这也需要根据不同的场合进行不同的测试才能产生最优的结果