作为免费、高效、开源的web容器,tomcat一直是企业及个人的首选,现就个人对tomcat细节配置进行简单的概括。
1.tomcat在服务器允许的情况下,可以正对其内存配置优化,提高其运行效率。
修改tomcat/bin目录下,WIN下catalina.bat文件,Linux下catalina.sh
加入以下行
WIN : set JAVA_OPTS=%JAVA_OPTS% -Xms128m -Xmx256m
Linux:JAVA_OPTS =“-Xms256m –Xmx1024m –XX:MaxNewsize=1024m –XX:MaxPermSize=1024m”
如果服务器内存只有1G,则推荐“-Xms128m -Xmx512m”,其他可依据运行及机器配置进行会对性的优化。
2.修改tomcat端口、项目路径、数据源配置问题。
<Connector URIEncoding="UTF-8" acceptCount="1000" connectionTimeout="20000" enableLookups="false" maxProcessors="900" maxSpareThreads="300" maxThreads="1000" minProcessors="100" minSpareThreads="200" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
port为端口配置,可以任意,访问时注意 http://ip:port/ProjectName,以上配置中URIEncoding="UTF-8"指定tomcat运行时的发送URL的编码格式,tomcat默认编码为GB2312(在get方式提交页面信息时,默认为tomcat编码格式,post提交可以设置提交编码格式。)
<Host name="localhost" appBase="/var/www/webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
appBase为项目存放路径,可以根据需要修改,默认为tomcat下的webapps目录。
url=”jdbc:mysql://ip:port/DBName?useUnicode=true&characterEncoding=utf-8&autoReconnect=true”
tomcat下配置MySQL数据源时,Mysql服务器默认的“wait_timeout”是8小时,也就是说一个connection空闲超过8个小时,Mysql将自动断开该 connection。这就是问题的所在,在C3P0 pools中的connections如果空闲超过8小时,Mysql将其断开,而C3P0并不知道该connection已经失效,如果这时有 Client请求connection,C3P0将该失效的Connection提供给Client,将会造成上面的异常。
解决办法:
修改tomcat下context.xml连接url配置,添加autoReconnect=true属性。
3.修改tomcat产生的日志,使其以log4j的方式存放。
log4j的配置
######################################################################
# 设定logger的root level为DEBUG,指定的输出目的地(appender)为file
log4j.rootLogger=INFO, file , stdout
# 设定stdout控制台
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%d{HH:mm:ss}] %5p %c{2} \"%m\"%n
# 设定输出位置,此处设定tomcat目录的logs下,文件名为bugmgrsys.log。
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=${catalina.home}/logs/projectLogs.log
log4j.appender.file.MaxFileSize=1024KB
# 设定制定的file使用的PatternLayout.
# 有关ConversionPattern中的转意字符的含义参考说明
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{HH:mm:ss} %-5p [%C] (%F:%L) - %m%n
################################################################
tomcat6-------lib
| |--------log4j.jar
| |--------log4j.properites
|
|----bin
|--------tomcat-juli.jar
################################################################
在Tomcat6.0中,
1.将tomcat-juli-adapters.jar,log4j-1.2.13.jar,log4j.properties复制到/usr/local/tomcat/lib下面.
2.进入/usr/local/tomcat/bin目录,替换bin目录下的tomcat-juli.jar为jars文件夹中的tomcat-juli.jar.
3.删除或重命名conf目录下的logging.properties文件
mv logging.properties loggingRe.properties (移动文件)
4.然后启动tomcat,就可以在/usr/local/tomcat/logs 下看到all.log了
配置及文件可以查看附件。
参考
http://joedanny.iteye.com/blog/154521
http://blog.csdn.net/tsun7263/archive/2009/07/09/4335219.aspx