Tomcat 常见日志:
日志 | 作用 |
---|---|
localhost.log |
存放当天项目运行的详细日志信息。 |
catalina.out |
存放所有的日志信息。 |
localhost_access_log.txt |
存放用户的 IP 地址、请求的地址、请求的接口、请求的协议、返回的状态码等信息。 |
manager.log |
webapps/manager 项目生成的日志文件。 |
host-manager.log |
webapps/host-manager 项目生成的日志文件。 |
Tomcat7
版本以上默认会自动进行分割。禁止列出目录(Tomcat 默认是拒绝的)
[root@Tomcat ~]# vim /usr/local/tomcat/conf/web.xml
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
页面超时
[root@Tomcat ~]# vim /usr/local/tomcat/conf/web.xml
<session-config>
<session-timeout>30</session-timeout>
</session-config>
默认页面(如果访问的不是默认页面的话,访问时就需要完整路径。如:www.baidu.com/test.html
)
[root@Tomcat ~]# vim /usr/local/tomcat/conf/web.xml
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
/usr/local/tomcat/webapps/ROOT
AJP
是一个二进制的 TCP 传输协议,相比 HTTP 这种纯文本的协议来说,效率和性能更高。AJP
协议,只支持 HTTP 协议。AJP
协议:因为支持 AJP
代理的服务器非常少,除了 Apache 之外的 HTTP Server 几乎都不能反代 AJP
协议。[root@Tomcat ~]# vim /usr/local/tomcat/conf/server.xml
<!-- Define an AJP 1.3 Connector on port 8009
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
-->
[root@Tomcat ~]# vim /usr/local/tomcat/conf/server.xml
<Connector port="8080" protocol="HTTP/1.1">
connectionTimeout="20000"
redirectPort="8443"
compression="on" # 开启压缩
compressionMinSize="10" # 指定最小压缩文件. 单位是字节
noCompressionUserAgents="gozilla,traviata" # 此浏览器类型不进行压缩
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"/> # 压缩文件的格式
[root@Tomcat ROOT]# /usr/local/tomcat/bin/shutdown.sh # 关闭 Tomcat 服务
[root@Tomcat ROOT]# /usr/local/tomcat/bin/start.sh # 开启 Tomcat 服务
Java 对 BIO、NIO、APR 的支持:
模式 | 默认运行版本 | 作用 |
---|---|---|
BIO(同步阻塞) | Tomcat7 版本以下 |
一个线程处理一个请求;缺点:并发量高时,线程数较多,浪费资源。 |
NIO(同步非阻塞) | Tomcat7 版本以上 |
利用 Java 的异步请求 IO 处理,可以通过少量的线程处理大量的请求。 |
APR(异步非阻塞) | 需手动更改 | 从操作系统层面解决 IO 阻塞问题;从而大大地提高 Tomcat 对静态文件的处理性能。 |
2)配置
Tomcat7
版本以上默认使用的是 NIO 模式,所以不再进行配置。Apr 模式配置:
[root@Tomcat ~]# yum -y install apr apr-devel
[root@Tomcat ~]# cp /usr/local/tomcat/bin/tomcat-native.tar.gz /root/
[root@Tomcat ~]# tar zxf tomcat-native.tar.gz
[root@Tomcat ~]# ls
... tomcat-native.tar.gz tomcat-native-1.2.17-src
[root@Tomcat ~]# cd tomcat-native-1.2.17-src/native/
[root@Tomcat native]# ./configure \
--with-apr=/usr/bin/apr-1-config && make && make install
安装成功会提示如下:
Libraries have been installed in:
/usr/local/apr/lib
...
[root@Tomcat ~]# cat <<END >> /usr/local/tomcat/bin/catalina.sh
CATALINA_OPTS="-Djava.library.path=/usr/local/apr/lib"
END
[root@Tomcat ~]# vim /usr/local/tomcat/conf/server.xml #修改主配置文件
将:
<Connector port="8080" protocol="HTTP/1.1"
修改为:
<Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol"
Http11AprProtocol
中的 Apr
替换为其它模式即可。[root@Tomcat ~]# cat <<END >> /etc/profile # 配置环境变量
export LD_LIBRARY_PATH=:/usr/local/apr/lib
END
[root@Tomcat ~]# source /etc/profile # 使其生效
[root@Tomcat ~]# /usr/local/tomcat/bin/shutdown.sh # 关闭 Tomcat 服务
[root@Tomcat ~]# /usr/local/tomcat/bin/start.sh # 开启 Tomcat 服务
3)查看 Tomcat 服务状态
[root@Tomcat ~]# vim /usr/local/tomcat/conf/tomcat-users.xml
在最后一行 </tomcat-users> 前面添加:
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<role rolename="manager-jmx"/>
<role rolename="manager-script"/>
<role rolename="manager-status"/>
# 如上五条命令只是设置角色
<user username="admin" password="123123" roles="admin-gui,manager-gui,manager-jmx,manager-script,manager-status"/>
默认 Tomcat 的管理页面只能通过 Tomcat 服务器上的浏览器才可以访问,设置其可以在其他主机访问
[root@Tomcat ~]# vim /usr/local/tomcat/webapps/manager/META-INF/context.xml
<Context antiResourceLocking="false" privileged="true" >
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$"/>
</Context>
验证:http://192.168.1.1:8080/manager/status
[root@Tomcat ~]# vim /usr/local/tomcat/conf/server.xml
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" # 工作模式为 Nio
URIEncoding="UTF-8" # 设置编码
minSpareThreads="25" # 初始化时创建的 socket 线程数
maxSpareThreads="75" # 连接器的最大空闲 socket 线程数. 一旦创建的线程超过这个值. Tomcat就会关闭不再需要的 socket 线程
enableLookups="false" # 屏蔽 DNS 查询
disableUploadTimeout="true" # 开启 上传数据时. 要么使用更长的时间完成上传. 要么出现更长的超时
connectionTimeout="20000" # 网络超时时间. 单位:毫秒
acceptCount="300" # 允许的最大连接数. 一般设置为 maxProcessors 的 1.5 倍即可. 超出后客户端请求将被拒绝
maxThreads="300" # 客户端请求最大线程数. 默认值为 "200"
maxProcessors="1000" # 最大连接线程数. 并发处理的最大请求数. 默认值为75
minProcessors="5" # 最小空闲连接线程数. 用于提高系统处理性能. 默认值为10
compression="on" # 开启压缩功能
compressionMinSize="2048" # 指定最小的压缩文件. 单位是字节
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" # 压缩文件的格式
redirectPort="8443" # 开启安全通道 SSL
/>
JVM 主要管理两种类型的内存:
内存分配:JVM 堆和非堆的初始值默认都是物理内存的 1/64
,最大分配内存为 1/4
。
[root@Tomcat ~]# vim /usr/local/tomcat/bin/catalina.sh
在 CLASSPATH= 下面添加:
JAVA_OPTS="-Xms2048M -Xmx2048M -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M"
-Xms
:设置堆最小内存。-Xmx
:设置堆最大内存。-XX:MetaspaceSize
:设置非堆最小内存。-XX:MaxMetaspaceSize
:设置非堆最大内存。设置成功后我们可以利用 JDK 自动的工具进行验证:
jps
:用来显示本地的 Java 进程,以及进程号,进程启动的路径等。jmap
:能够查看运行中的 JVM 物理内存的占用情况。[root@Tomcat ~]# jps # 查看本地 Java 进程号
15703 Jps
15576 Bootstrap
[root@Tomcat ~]# jmap -heap 15576 # 查看 JVM 物理内存占用情况
严重: Exception invoking periodic operation: java.lang.OutOfMemoryError: Java heap space
严重: Error processing request java.lang.OutOfMemoryError: GC overhead limit exceeded