功能
归档
248
2017 年 01 月 26 日
Tomcat详解(二)

一、tomcat的配置文件

cd /ane/tomcat/conf/        #进入tomcat安装路径下的配置文件
ll -h
total 216K
drwxr-xr-x 3 root root 4.0K Jan 26 06:10 Catalina
-rw------- 1 root root  13K Sep 28 16:19 catalina.policy
-rw------- 1 root root 7.0K Sep 28 16:19 catalina.properties
-rw------- 1 root root 1.6K Sep 28 16:19 context.xml
-rw------- 1 root root 3.4K Sep 28 16:19 logging.properties
-rw------- 1 root root 6.4K Sep 28 16:19 server.xml         #主配置文件
-rw------- 1 root root 1.8K Sep 28 16:19 tomcat-users.xml   #Tomcat管理用户配置文件
-rw------- 1 root root 1.9K Sep 28 16:19 tomcat-users.xsd
-rw------- 1 root root 164K Sep 28 16:19 web.xml

编辑tomcatconf下的server.xml
shutdown指定终止Tomcat服务器运行时,发给Tomcat服务器的shutdown监听端口的字符串.该属性必须设置

<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<!-- Security listener. Documentation at /docs/config/listeners.html
<Listener className="org.apache.catalina.security.SecurityListener" />
-->
<!--APR library loader. Documentation at /docs/apr.html -->
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html -->
<Listener className="org.apache.catalina.core.JasperListener" />
<!-- Prevent memory leaks due to use of particular java/javax APIs-->
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

service 服务配置

<Connector port="8080" protocol="HTTP/1.1"      #port 端口配置
               connectionTimeout="20000"        #connectionTimeout指定超时的时间数(以毫秒为单位)
               redirectPort="8443" />           #指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号
#可添加项
maxThreads="3000" #tomcat起动的最大线程数,即同时处理的任务个数,默认值为200
minSpareThreads="100" #初始化时创建的线程数
acceptCount="800" #指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理 
maxKeepAliveRequests="200"#表示该连接最大支持的请求数。超过该请求数的连接也将被关闭(此时就会返回一个Connection: close头给客户端)。
URIEncoding="UTF-8" #指定字符集

tomcat获取用户IP地址

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t "%r" %s %b" />

server.xml组件类别

顶级组件:位于整个配置的顶层,如server。

容器类组件:可以包含其它组件的组件,如service、engine、host、context。

连接器组件:连接用户请求至tomcat,如connector。

被嵌套类组件:位于一个容器当中,不能包含其他组件,如Valve、logger。

<server> <service> <connector /> <engine> <host> <context></context> </host> <host> <context></context> </host> </engine> </service> </server>

组件详解server.xml

engine:核心容器组件,catalina引擎,负责通过connector接收用户请求,并处理请求,将请求转至对应的虚拟主机host。
host:类似于httpd中的虚拟主机,一般而言支持基于FQDN的虚拟主机。
context:定义一个应用程序,是一个最内层的容器类组件(不能再嵌套)。配置context的主要目的指定对应对的webapp的根目录,类似于httpd的alias,其还能为webapp指定额外的属性,如部署方式等。
connector:接收用户请求,类似于httpd的listen配置监听端口的。
service(服务):将connector关联至engine,因此一个service内部可以有多个connector,但只能有一个引擎engine。service内部有两个connector,一个engine。因此,一般情况下一个server内部只有一个service,一个service内部只有一个engine,但一个service内部可以有多个connector。
server:表示一个运行于JVM中的tomcat实例。
Valve:阀门,拦截请求并在将其转至对应的webapp前进行某种处理操作,可以用于任何容器中,比如记录日志(access log valve)、基于IP做访问控制(remote address filter valve)。
logger:日志记录器,用于记录组件内部的状态信息,可以用于除context外的任何容器中。
realm:可以用于任意容器类的组件中,关联一个用户认证库,实现认证和授权。可以关联的认证库有两种:UserDatabaseRealm、MemoryRealm和JDBCRealm。
UserDatabaseRealm:使用JNDI自定义的用户认证库。
MemoryRealm:认证信息定义在tomcat-users.xml中。 JDBCRealm:认证信息定义在数据库中,并通过JDBC连接至数据库中查找认证用户。

组件详解Host

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
#autoDeploy检索

二、tomcat的内存优化(jvm调优)


编辑tomcatbincatalina.sh

JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m -XX:MaxPermSize=512m"
server:一定要作为第一个参数,在多个CPU时性能佳 -Xms:初始堆内存Heap大小,使用的最小内存,cpu性能高时此值应设的大一些 -Xmx:初始堆内存heap最大值,使用的最大内存 上面两个值是分配JVM的最小和最大内存,取决于硬件物理内存的大小,建议均设为物理内存的一半。 -XX:PermSize:设定内存的永久保存区域 -XX:MaxPermSize:设定最大内存的永久保存区域 -XX:MaxNewSize: -Xss 15120 这使得JBoss每增加一个线程(thread)就会立即消耗15M内存,而最佳值应该是128K,默认值好像是512k. +XX:AggressiveHeap 会使得 Xms没有意义。这个参数让jvm忽略Xmx参数,疯狂地吃完一个G物理内存,再吃尽一个G的swap。 -Xss:每个线程的Stack大小 -verbose:gc 现实垃圾收集信息 -Xloggc:gc.log 指定垃圾收集日志文件 -Xmn:young generation的heap大小,一般设置为Xmx的3、4分之一 -XX:+UseParNewGC :缩短minor收集的时间 -XX:+UseConcMarkSweepGC :缩短major收集的时间

三、性能优化

屏蔽dns查询
enableLookups="false" <Connector port="8081" protocol="HTTP/1.1" connectionTimeout="6000" enableLookups="false" acceptCount="800" redirectPort="8443" />

四、tomcat的目录结构

tree -L
├── bin #用以启动、关闭Tomcat或者其它功能的脚本(.bat文件和.sh文件) 
├── conf #用以配置Tomcat的XML及DTD文件 
├── lib #存放web应用能访问的JAR包 
├── LICENSE 
├── logs #Catalina和其它Web应用程序的日志文件
├── NOTICE 
├── RELEASE-NOTES 
├── RUNNING.txt 
├── temp #临时文件 
├── webapps #Web应用程序根目录 
└── work #用以产生有JSP编译出的Servlet的.java和.class文件 
7 directories, 4 files
cd webapps/ ll

total 20

drwxr-xr-x 14 root root 4096 Oct 5 12:09 docs #tomcat帮助文档 
drwxr-xr-x 6 root root 4096 Oct 5 12:09 examples #web应用实例 
drwxr-xr-x 5 root root 4096 Oct 5 12:09 host-manager #管理 
drwxr-xr-x 5 root root 4096 Oct 5 12:09 manager #管理 
drwxr-xr-x 3 root root 4096 Oct 5 12:09 ROOT #默认网站根目录
留言
Loading...

发表评论

电子邮件地址不会被公开。 必填项已用*标注