当前位置: 首页 > news >正文

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/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.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回收频繁使性能达到一个最优的结果。当然,这也需要根据不同的场合进行不同的测试才能产生最优的结果!

相关文章:

tomcat 服务的目录结构和tomcat的运行模式

目录 一、tomcat 服务的目录结构解析&#xff1a; 1、tomcat目录结构&#xff1a; bin目录&#xff1a; conf目录&#xff1a; lib目录&#xff1a; logs目录&#xff1a; temp目录&#xff1a; webapps目录&#xff1a; wokr目录&#xff1a; 二、tomcat服务的运行模…...

vector迭代器失效问题

一、迭代器&#xff1a; 迭代器的主要作用就是让算法能够不用关心底层数据结构&#xff0c;其底层实际就是一个指针&#xff0c;或者是对指针进行了封装&#xff0c;比如&#xff1a;vector的迭代器就是原生态指针T* 。因此迭代器失效&#xff0c;实际就是迭代器底层对应指针所…...

2023年排名前茅的十大饭店装修设计!

相信大家都是知道的&#xff0c;饭店装修设计其实是一门很深的学问&#xff0c;只有掌握这门学问才能够打造出来精美的空间&#xff0c;因此饭店装修必须要有专业餐饮设计公司的设计师进行设计。但是在国内饭店装修设计公司那么多&#xff0c;饭店老板要如何选择呢&#xff1f;…...

MFCCA多通道多说话人语音识别模型上线魔搭(ModelScope)

实验室研发的基于多帧跨通道注意力机制&#xff08;MFCCA&#xff09;的多说话人语音识别模型近日上线魔搭&#xff08;ModelScope&#xff09;社区&#xff0c;该模型在AliMeeting会议数据集上获得当前最优性能。欢迎大家下载。开发者可以基于此模型进一步利用ModelScope的微调…...

刷题记录:牛客NC25078[USACO 2007 Ope S]City Horizon

传送门:牛客 题目描述: Farmer John has taken his cows on a trip to the city! As the sun sets, the cows gaze at the city horizon and observe the beautiful silhouettes formed by the rectangular buildings. The entire horizon is represented by a number line …...

【Java|golang】 1238. 循环码排列---格雷编码

给你两个整数 n 和 start。你的任务是返回任意 (0,1,2,…,2^n-1) 的排列 p&#xff0c;并且满足&#xff1a; p[0] start p[i] 和 p[i1] 的二进制表示形式只有一位不同 p[0] 和 p[2^n -1] 的二进制表示形式也只有一位不同 示例 1&#xff1a; 输入&#xff1a;n 2, start …...

Python自动化测试框架封装和调用

封装与调用函数与参数化前言 面实现了参数的关联&#xff0c;那种只是记流水账的完成功能&#xff0c;不便于维护&#xff0c;也没什么可读性&#xff0c;接下来这篇可以把每一个动作写成一个函数&#xff0c;这样更方便了。参数化的思维只需记住一点&#xff1a;不要写死 登录…...

线程的执行

承接上文CPU原理简介程序的执行是由控制器发信号推动整个程序一步一步向前走&#xff0c;将数据存储在寄存器&#xff0c;从程序计数器中获取指令&#xff0c;比如先把3放到寄存器&#xff0c;再把5放到寄存器&#xff0c;再做一个加法&#xff0c;加法就是一个指令&#xff0c…...

【视频】海康摄像头、NVR网络协议简介

1、软硬件整体架构 2、涉及的网络协议 3、协议简介 3.1 海康私有协议 设备发现SADP:进行设备的发现、激活、修改网络参数、忘记密码等; SDK:4200、系统平台的接入前端设备,协议不对外开放,但对外提供接口库; ISAPI:Intelligent Security API(智能安全API),基于HTTP传输…...

【Spring的事务传播行为有哪些呢?Spring事务的隔离级别?讲下嵌套事务?】

如果你想寻求一份与后端相关的开发工作&#xff0c;那么关于Spring事务相关的面试题你就不能说不会并且不能不知道&#xff1f; 人生如棋&#xff0c;我愿为卒&#xff0c;行动虽慢&#xff0c;可谁曾见我后退一步&#xff1f; 一.Spring中声明事务的方式 1.1 编程式事务 编程…...

其实一点不难学会这三步一定让你学会制作一个『3D建模』大屏

上次已经教过大家怎样制作一个简单的2D数据可视化大屏~那有一些朋友们就会说那些炫酷的3D可视化大屏是怎样制作的呢&#xff1f;这不就来了&#xff0c;今天就教大家怎样用山海鲸可视化软件制作一个带3D建模的可视化大屏&#xff0c;并且最重要的是无需会特别复杂的3D建模知识。…...

【C++】C++的内存模型之四大分区

程序的内存模型 C程序在执行时&#xff0c;将内存大方向划分为4个区域 代码区&#xff1a;存放函数体的二进制代码&#xff0c;由操作系统进行管理的全局区&#xff1a;存放全局变量和静态变量以及常量栈区&#xff1a;由编译器自动分配释放&#xff0c;存放函数的参数值&…...

Vue跨级通信(重点)

当不使用Vuex的前提下&#xff0c;子孙传递就得使用另外一种办法&#xff1a;provide 和 inject 总结&#xff1a;provide / inject 类似于消息的订阅和发布。- inject接收数据。- provide提供或发送数据&#xff0c;&#xff08;1&#xff09;provide&#xff08;name&#xf…...

支付系统中的设计模式07:责任链模式

最近公司业务的发展果然如老板当初所画(预)饼(言)的那样红(恍)红(恍)火(惚)火(惚),蒸蒸日上,每天的流水都在不断攀升到新的高度,有不少人都从公司开发的电商平台挣到了钱。 不过问题也接着来了——运营部门经过老板的同意,也学着产品经理提出了下面几项非常合理…...

期末综合考试

一、概率论1、全概率公式、贝叶斯公式应用2、期望、方差、协方差的定义以及性质证明(1) 期望(2) 方差(3) 协方差二、数理统计1、参数估计(1) 矩估计(2) 最大似然估计(3) 综合例题一、概率论 1、全概率公式、贝叶斯公式应用 记住标黄的两段&#xff0c;上考场直接套数据&#x…...

数据结构与算法之爬楼梯动态规划

一.题目(爬楼梯)假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f;注意&#xff1a;给定 n 是一个正整数。示例 1&#xff1a;输入&#xff1a; 2输出&#xff1a; 2解释&#xff1a; 有两种方法可以爬…...

CleanMyMac4.12最新Mac电脑系统垃圾清理神器

CleanMyMac是Mac一款神器&#xff0c;特别是清理已卸载软件残留垃圾文件信息库比较全面。 clearmymac以极其快速和时尚的方式为您提供及时的建议&#xff0c;组织&#xff0c;更新和保护您的Mac。完全支持macOS 11&#xff08;Big Sur&#xff09;操作系统&#xff1b;它以其简…...

数据治理如何做?火山引擎 DataLeap 帮助这款产品 3 个月降低计算成本 20%

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 本文讲述字节跳动一款 App 产品的数据治理故事。该产品随着用户体量和数据体量不断增长&#xff0c;数仓的任务量、数据量也不断攀升&#xff0c;运维难、成本贵、稳…...

求职3个月,简历大多都石沉大海,一听是手工测试都纷纷摇头....太难了

距离被上家公司裁员已经过去了3个月了&#xff0c;3个月的求职经历真的让我痛不欲生&#xff0c;我也从中理解感叹到了很多&#xff0c;想写出来&#xff0c;告诫跟我一样的经历的人。 我今年26岁&#xff0c;大学是一所普通的大专&#xff0c;学的是机电专业&#xff0c;如何…...

Visual Studio快捷键汇总

常用快捷键CtrlEC 注释代码CtrlEU 取消注释代码CtrlED 格式化全部代码CtrlShiftA 新建类CtrlRG 删除无效UsingCtrlH 批量替换CtrlG 跳转到指定行CtrlEE 在交互窗口中运行选中代码(很实用)AltEnter 快速引用shiftF9 监控(代码运行时)shiftF6 生成(当前类库)F6 生成(整个解决方案…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件&#xff1a; 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

iview框架主题色的应用

1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题&#xff0c;无需引入&#xff0c;直接可…...

【网络安全】开源系统getshell漏洞挖掘

审计过程&#xff1a; 在入口文件admin/index.php中&#xff1a; 用户可以通过m,c,a等参数控制加载的文件和方法&#xff0c;在app/system/entrance.php中存在重点代码&#xff1a; 当M_TYPE system并且M_MODULE include时&#xff0c;会设置常量PATH_OWN_FILE为PATH_APP.M_T…...