之前寫過一些有關Tomcat最佳化的文章http://passover.blog.51cto.com/2431658/732629),實際生產環境有些配置除了效能最佳化,還有些是方便管理。以下是我個人總結的一些經驗,主要是只考慮單個tomcat的情況,我個人更推薦前端放一個nginx來做壓縮和長串連的事情。也希望能有網友幫忙再幫忙指點更多的細節。
1. tomcat的下載與安裝
目前tomcat最新的穩定版本是7.0.30,建議使用這個版本,看changelog是有一堆的bug fix。到官方http://tomcat.apache.org/download-70.cgi下載一個即可,解壓後即可運行。
2. jvm啟動參數的調整
這步是非常重要,建立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"
3. tomcat的配置最佳化
在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
4. 使用tomcat native安裝apr最佳化串連效能
tomcat解壓包在bin/下面就能找到源檔案的tar.gz包,不用重新下載。安裝過程參見http://tomcat.apache.org/native-doc/
5. 對catalina.out日誌做每日切分
我採用的辦法是用cronolog,可以參見http://unmi.cc/split-tomcat-catalina-out-file。這裡提一下,我直接用aptitude來安裝的,使用的時候調用的命令位置是/usr/bin/cronolog
6. 配置tomcat-users方便管理
在conf/tomcat-users.xml中添加,參考配置:
- <role rolename="manager-gui"/>
- <role rolename="admin-gui"/>
- <user username="admin" password="123456" roles="manager-gui,admin-gui"/>
7. log4j的動態載入配置
如果不想修改一下log4j記錄層級就要重啟應用的話,這個還是挺重要的。log4j本身有個watch的功能,但是一直在那定時刷其實也不好,後來找到了個文章,覺得這個辦法非常好。直接調用一個action實現配置修改。參考資料:http://blog.sina.com.cn/s/blog_4b81125f0100fo95.html
總結:以上是剛剛配置新伺服器的時候想到的,隨手記錄了一下,以後有想到的新的內容再補充。各位網友可以參考以上配置,根據實際需要進行取捨和修改。