java萨瓦_Tomcat配置与性能调优

一、Tomcat文件详解

日志文件logs

catalina.out

catalina.out其实是tomcat的标准输出(stdout)和标准出错(stderr),在tomcat的启动脚本里指定的,没有修改的话stdout和stderr会重定向到这里。

catalina.-.log

访问日志信息,访问的时间、IP、访问的资料等。

localhost.-.log

运行日志信息,运行异常、错误日志等。

配置文件conf

server.xml 主要配置文件。

web.xml 缺省的web app配置,WEB-INF/web.xml会覆盖该配置。

tomcat-users.xml 用户配置文件。

二、安全配置

修改shutdown命令

# vim server.xml

SHUTDOWN修改为其他字符串

修改用户名、密码

# vim tomcat-users.xml

添加以下内容

屏蔽后台管理入口

方法1.控制用户和权限,废掉要管理权限的用户。

方法2.将conf/Catalina/localhost/manager.xml更名。

配置403,404,500错误页面

默认情况下,报出HTTP错误的时候会暴露tomcat版本号,需要重新定义错误跳转页面。

三、项目部署

第一种方法(直接放入 webapps 目录)

编写并编译好的web项目(如果是 eclipse,将项目打成 war 包),放入到 webapps 中

第二种方法(修改 conf/server.xml 文件 )

# vim server.xml

在标签之间输入项目配置信息

path:浏览器访问时的路径名

docBase:web项目的WebRoot所在的路径,注意是WebRoot的路径,不是项目的路径,其实也就是编译后的项目。

reloadble:设定项目有改动时,tomcat是否重新加载该项目

第三种方法(conf\Catalina\localhost )

# touch test.xml

加入下面配置语句

总结

① 第一种方法我们需要将编译好的项目重新 copy 到 webapps 目录。

② 第二种方法直接在 server.xml 文件中配置,从 tomcat5.0版本后,server.xml 文件作为启动的主要配置文件,Tomcat 启动后便不会再读取这个文件,因此无法再 tomcat 服务启动后发布 web 项目。

③ 第三种方法是通常使用的方法,每个项目分开配置,tomcat 将以\conf\Catalina\localhost 目录下的 xml 文件的文件名作为 web 应用的上下文路径,而不再理会 中配置的 path 路径,在配置的时候,可以不用填写 path。

四、Tomcat性能调优

1、优化内存JDK(最直接优化方式)

主要是对 tomcat 启动参数优化,在 tomcat 的启动脚本 catalina.sh 中设置 java_OPTS 参数

参数说明:

-server 启用jdk 的 server 版

-Xms java虚拟机初始化时的最小内存

-Xmx java虚拟机可使用的最大内存

-XX: PermSize 内存永久保留区域

-XX:MaxNewSize:新生代占整个堆内存的最大值。

-XX:MaxPermSize 内存最大永久保留区域

配置示例

# vim catalina.sh

添加以下内容:

JAVA_OPTS='-Xms1024m -Xmx2048m -XX: PermSize=256M -XX:MaxNewSize=256m -XX:MaxPermSize=256m'

错误提示

1)错误提示:java.lang.OutOfMemoryError:Java heap space

Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,有可能导致系统无法运行。常见的问题是报Tomcat内存溢出错误,Outof Memory(系统内存不足)的异常,从而导致客户端显示500错误,一般调整Tomcat的-Xms和-Xmx即可解决问题,通常将-Xms和-Xmx设置成一样,堆的最大值设置为物理可用内存的最大值的80%。

set JAVA_OPTS=-Xms512m-Xmx512m

2)错误提示:java.lang.OutOfMemoryError: PermGenspace

PermGenspace的全称是Permanent Generationspace,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGenspace中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGenspace进行清理,所以如果你的应用中有很CLASS的话,就很可能出现PermGen space错误,这种错误常见在web服务器对JSP进行precompile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。解决方法:

setJAVA_OPTS=-XX:PermSize=128M

3)在使用-Xms和-Xmx调整tomcat的堆大小时,还需要考虑垃圾回收机制。如果系统花费很多的时间收集垃圾,请减小堆大小。一次完全的垃圾收集应该不超过3-5 秒。如果垃圾收集成为瓶颈,那么需要指定代的大小,检查垃圾收集的详细输出,研究垃圾收集参数对性能的影响。一般说来,你应该使用物理内存的 80% 作为堆大小。当增加处理器时,记得增加内存,因为分配可以并行进行,而垃圾收集不是并行的。

2、优化连接数

2.1.优化线程数

# vim server.xml

增加maxThreads和acceptCount属性(使acceptCount大于等于maxThreads),如下:

其中:

• maxThreads:tomcat可用于请求处理的最大线程数,默认是200

• minSpareThreads:tomcat初始线程数,即最小空闲线程数

• maxSpareThreads:tomcat最大空闲线程数,超过的会被关闭

• acceptCount:当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理.默认100

2.2.使用线程池

# vim server.xml

增加executor节点,然后配置connector的executor属性

其中:

• namePrefix:线程池中线程的命名前缀

• maxThreads:线程池的最大线程数

• minSpareThreads:线程池的最小空闲线程数

• maxIdleTime:超过最小空闲线程数时,多的线程会等待这个时间长度,然后关闭

• threadPriority:线程优先级

3、关闭DNS查询

enableLookups=”false”

4、配置gzip压缩(HTTP压缩)功能

# vim server.xml

●compression="on" 打开压缩功能

●compressionMinSize="2048"启用压缩的输出内容大小,默认为2KB

●noCompressionUserAgents="gozilla,traviata" 对于以下的浏览器,不启用压缩

●compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" 哪些资源类型需要压缩

配置示例如下:

redirectPort="8443" acceptCount="500" maxThreads="400" enableLookups="false" compression="on" compressionMinSize="2048" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"/>

5、改变运行模式

tomcat的运行模式有3种:BIO NIO APR

bio

默认的模式,同步并阻塞,服务器实现模式为一个连接一个线程,性能非常低下,没有经过任何优化处理和支持。

nio

基于缓冲区、并能提供非阻塞I/O操作的Java API,同一个线程处理多个connection(多路复用),Tomcat 8.x默认情况下全部是运行在nio模式下

想运行在该模式下,直接修改server.xml里的Connector节点,修改protocol为

启动后,就可以生效。

apr

apr的本质就是使用jni技术调用操作系统底层的IO接口,安装起来最困难,但是从操作系统级别来解决异步的IO问题,大幅度的提高性能。生产环境下用apr是非常必要的。

# yum -y install openssl-devel

# yum -y install apr-devel

# wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-connectors/native/1.2.18/source/tomcat-native-1.2.18-src.tar.gz

# tar -xzf tomcat-native-1.2.18-src.tar.gz

# cd tomcat-native-1.2.18-src/native

# ./configure && make && make install

将默认的protocol="HTTP/1.1"修改为protocol="org.apache.coyote.http11.Http11AprProtocol"

引入apr:配置catalina.sh文件

在原有变量JAVA_OPTS后面追加一行新的配置即可:JAVA_OPTS="$JAVA_OPTS -Djava.library.path=/usr/local/apr/lib"

五、一般生产环境简化配置说明

maxHttpHeaderSize="8192" useBodyEncodingForURI="true"

maxThreads="1000" # maxThreads:tomcat可用于请求处理的最大线程数,默认是200

redirectPort="8443"

URIEncoding="utf-8"

enableLookups="false" # 关闭DNS查询

compression="on" # 打开gzip压缩功能

compressionMinSize="2048" # 启用压缩的输出内容大小,默认为2KB

compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" # 哪些资源需要压缩

connectionTimeout="20000"

disableUploadTimeout="true"

/>

port="8080" protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443" />

unpackWARs="true" autoDeploy="true"

xmlValidation="false" xmlNamespaceAware="false">

# 部署项目 path:浏览器访问时的路径名

# docBase:web项目的WebRoot所在的路径,注意是WebRoot的路径,不是项目的路径,其实也就是编译后的项目。

# reloadble:设定项目有改动时,tomcat是否重新加载该项目

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值