之前写过一些有关Tomcat优化的文章(http://passover.blog.51cto.com/2431658/732629),实际生产环境有些配置除了性能优化,还有些是方便管理。以下是我个人总结的一些经验,主要是只考虑单个tomcat的情况,我个人更推荐前端放一个nginx来做压缩和长连接的事情。也希望能有网友帮忙再帮忙指点更多的细节。
目前tomcat最新的稳定版本是7.0.30,建议使用这个版本,看changelog是有一堆的bug fix。到官方http://tomcat.apache.org/download-70.cgi下载一个即可,解压后即可运行。
这步是非常重要,新建setenv.sh,加入自己的配置,参考配置:
- #!/bin/sh
- LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CATALINA_HOME/lib
- export LD_LIBRARY_PATH
- TOMCAT_USER=nobody
- JSVC_OPTS='-jvm server'
- JAVA_OPTS='-server -Xms1024m -Xmx1024m -XX:PermSize=192m -XX:MaxPermSize=192m'
或者偷懒点在catilina.sh文件开头添加,参考配置:
- JAVA_OPTS="-server -Xms1024m -Xmx1024m -XX:PermSize=192m -XX:MaxPermSize=192m"
在conf/server.xml中修改connector选项,其中compreesion参数稍微注意下是否需要打开。参考配置:
- <Connector port="8080" protocol="HTTP/1.1"
- connectionTimeout="20000"
- redirectPort="8443"
- compression="on"
- compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,application/json"
- useSendfile="false"
- maxThreads="150"
- minSpareThreads="20"
- acceptCount="100"
- disableUploadTimeout="true"
- enableLookups="false"
- URIEncoding="UTF-8" />
在conf/server.xml中修改日志打印,增加每个请求的响应时间输出。参考配置:
- <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
- prefix="localhost_access_log." suffix=".txt"
- pattern="%h %l %u %t "%r" %s %b %T" />
详细配置可以参考http://tomcat.apache.org/tomcat-7.0-doc/config/http.html
tomcat解压包在bin/下面就能找到源文件的tar.gz包,不用重新下载。安装过程参见http://tomcat.apache.org/native-doc/
我采用的办法是用cronolog,可以参见http://unmi.cc/split-tomcat-catalina-out-file。这里提一下,我直接用aptitude来安装的,使用的时候调用的命令位置是/usr/bin/cronolog
在conf/tomcat-users.xml中添加,参考配置:
- <role rolename="manager-gui"/>
- <role rolename="admin-gui"/>
- <user username="admin" password="123456" roles="manager-gui,admin-gui"/>
如果不想修改一下log4j日志级别就要重启应用的话,这个还是挺重要的。log4j本身有个watch的功能,但是一直在那定时刷其实也不好,后来找到了个文章,觉得这个办法非常好。直接调用一个action实现配置修改。参考资料:http://blog.sina.com.cn/s/blog_4b81125f0100fo95.html
总结:以上是刚刚配置新服务器的时候想到的,随手记录了一下,以后有想到的新的内容再补充。各位网友可以参考以上配置,根据实际需要进行取舍和修改。