tomcat 服务的目录结构和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包解压后的目录结构如下:

[root@VM-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路径.

[root@VM-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的一些配置文件。

[root@VM-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包

[root@VM-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运行中间件服务,都会设置生成业务的日志文件,以便进行业务日志的分析

[root@VM-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运行带来影响)。

[root@VM-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包。
当然,你也可以把应用程序放置在磁盘的任意位置,在配置文件中映射好就行。

[root@VM-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编译后的文件。

[root@VM-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的模式介绍:

  • BIO(blocking 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使用的是哪种运行模式:

[root@VM-8-10-centos logs]# cat catalina.out | grep "http-bio-8080"
Starting ProtocolHandler ["http-bio-8080"] ## BIO模式	

[root@VM-8-10-centos logs]# cat catalina.out | grep "http-nio-8080"
Starting ProtocolHandler ["http-nio-8080"] ## NIO模式	

[root@VM-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 executor="tomcatThreadPool"
               port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
               connectionTimeout="20000"
               redirectPort="8443" />
			   
......			   
    <Connector port="8009" protocol="org.apache.coyote.http11.Http11NioProtocol" redirectPort="8443" />	
.......

注:这里是将tomcat提供服务的端口和与其他http服务器通信接口都修改为NIO运行模式。

tomcat的运行模式设置为APR模式:

tomcat要运行APR运行模式需要安装apr服务和tomcat-native服务可以能支持的。并且目前默认的是tomcat8.是自带了tomcat-native包的。

[root@VM-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服务和相关的依赖包 

[root@VM-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
[root@VM-8-10-centos app ]# yum install cmake gcc expat-devel
..............

安装apr

安装apr

[root@VM-8-10-centos app]# tar -zxvf  apr-1.7.2.tar.gz
...........

编译apr

[root@VM-8-10-centos app]# cd apr-1.7.2
[root@VM-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
[root@VM-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

[root@VM-8-10-centos app]# cd apr-iconv-1.2.2/
[root@VM-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
[root@VM-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 --mode=install 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

[root@VM-8-10-centos app]# cd apr-util-1.6.3/
[root@VM-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
[root@VM-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

[root@VM-8-10-centos bin]# pwd
/app/apache-tomcat-8.5.85/bin

[root@VM-8-10-centos bin]# tar -zxvf  tomcat-native.tar.gz

...........

[root@VM-8-10-centos bin]# cd tomcat-native-1.2.35-src/native

[root@VM-8-10-centos native]# pwd
/app/apache-tomcat-8.5.85/bin/tomcat-native-1.2.35-src/native

[root@VM-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
[root@VM-8-10-centos native]# make && make install
........
.......
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/apr/lib

If 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 variable
     during execution
   - add LIBDIR to the 'LD_RUN_PATH' environment variable
     during linking
   - use the '-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to '/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------

 注:显示如上表示已经安装完成了。

 

3.设置apr的环境变量

[root@VM-8-10-centos app]#  vim /etc/profile

添加如下的内容:

#apr
export LD_LIBRARY_PATH=/usr/local/apr/lib

[root@VM-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 port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol"
               connectionTimeout="20000"
               redirectPort="8443" />

修改SSLEngine 为off 

  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="off" />

启动tomcat服务:

[root@VM-8-10-centos conf]# cd ../bin/
[root@VM-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.
[root@VM-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.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -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 --color=auto java
[root@VM-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当前运行模式

[root@VM-8-10-centos bin]# cd ../logs/
[root@VM-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.manager=org.apache.juli.ClassLoaderLogManager
23-Feb-2023 16:05:55.861 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
23-Feb-2023 16:05:55.861 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.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.UMASK=0027
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回收频繁使性能达到一个最优的结果。当然,这也需要根据不同的场合进行不同的测试才能产生最优的结果!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jiang0615csdn

你对鼓励是我最大的动力来源

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值