tomcat日志设置规范

涉及两部分:关闭控制台日志规范程序日志大小和个数

1.tomcat程序日志

在%TOMCAT_HOME%/conf/logging.properties中设置catalina.org.apache.juli.FileHandler.level = OFF,关闭catalina的输出。

如需保留catalina输出,可参考文档管理系统经验总结添加自动删除脚本。

2.程序日志

编辑log4j.properties文件。一般可见log4j.rootCategory=info,stdout,file,stdout输出到控制台,file输出到文件。

1)关闭控制台日志输出

将log4j.appender.stdout=org.apache.log4j.ConsoleAppender注释掉,禁止程序向catalina.out输出控制台信息。

2)规范程序日志输出

log4j.appender.file.MaxFileSize=10MB //单个日志大小

log4j.appender.file.MaxBackupIndex=10 //循环日志个数

在限定日志大小和数量情况下,可根据项目实际情况设定日志跟踪级别。

1.堆大小

普通工控机:-Xmx1g -Xms1g

高配服务器:-Xmx2g -Xms2g

初始堆值和最大堆值设置同样大小,一般不超过总内存的1/2,32bit系统下由于寻址问题一般不能超过3GB,系统中有其他重要程序(如数据库)占用内存时,要调小该值。

常见由堆大小引发的内存溢出:java.lang.OutOfMemory

2.年轻代大小

普通工控机:-Xmn512m

高配服务器:-Xmn1g

一般为堆大小的3/8-1/2

常见由年轻代大小引发的内存溢出:java.lang.OutOfMemoryError: Java heap space Heap size

3.持久代大小

普通工控机:-XX:PermSize=256m -XX:MaxPermSize=256m

高配服务器:-XX:PermSize=256m -XX:MaxPermSize=256m

初始持久代值和最大值设置同样大小,一般值不用调整,若同一tomcat下有多个服务时,可以略微增加。

常见由持久代大小引发的内存溢出:java.lang.OutOfMemoryError: PermGen space

编辑tomcat/bin/catalina.sh文件,在文件开头非备注行添加参数:

JAVA_OPTS=’参数一 参数二……’

例:

普通工控机:

JAVA_OPTS=’-Xms1g -Xmx1g -Xmn512m -XX:PermSize=256m -XX:MaxPermSize=256m’

高配服务器:

JAVA_OPTS=’-Xms2g -Xmx2g -Xmn1g -XX:PermSize=256m -XX:MaxPermSize=256m’

在不同系统和不同JDK下允许值不一样,事先需进行参数测试,如普通工控机:

java -Xms1g -Xmx1g -Xmn512m -XX:PermSize=256m -XX:MaxPermSize=256m -version

输入此命令可以正常返回版本号后,再进行修改。

修改完成后,重启tomcat,可以观察到ps aux结果中,tomcat的RSS值(实际驻留内存)大幅上升。

注意:

JDK 1.5及以前版本对内存默认串行回收,所以没有特殊情况JDK均要求升级至1.6及以上版本。