自動重啟tomcat及重啟後亂碼問題
Tomcat作為開源的伺服器,效能與穩定性上比起一些商務服務器還是要差一些。將項目部署到Tomcat後隔段時間就會死掉,出現這種問題的主要原因可 能是記憶體資料溢出,因為Tomcat容器在發生大量與資料庫互動查詢或者操作的時候很容易出現問題。定時重啟是一個很好的補救措施,定時重啟可以定時的清 理記憶體也降低了Tomcat啟動並執行風險,從而保持tomcat的最佳效能。
定時執行的命令是crontab,編輯/var/spool/cron/下的root檔案(路徑根據系統的不同可能不同,沒有root檔案就建立),加入以下兩行:
1 6 * * * /usr/local/apache-tomcat-6.0.20/bin/shutdown.sh
2 6 * * * /usr/local/apache-tomcat-6.0.20/bin/startup.sh
其中開頭的1 6 * * *表示在每天的早上6點1分執行,詳細介紹請百度之。
這樣在關閉之後1分種再開啟tomcat。
你可能要問,可不可以都在6點1分執行,即都寫成1 6 * * *? 答案是不行,雖然開啟tomcat的命令寫在關閉的下面,但同一時間的命令並不是按寫的先後順序執行的,有可能先執行了開啟的命令,後執行關閉的命令,這樣今天tomcat就用不了了。
當然你可以把這兩行命令(去掉前面的1 6 * * *)寫在一個restartTomcat.sh檔案裡,中間加一行sleep 10s,然後在root檔案裡加一句1 6 * * * restartTomcat.sh。如此就可以每天早上6點1分自動重啟tomcat了。
自動重啟的問題解決了,但又帶來了一個新的問題:網站運行良好,但有些地方顯示的漢字是亂碼,手工重啟tomcat後就沒有亂碼了。原因是手工重啟與預設系統任務自動重啟的字元集是不一樣的。解決方案是編輯/usr/local/apache-tomcat-6.0.20/bin/catalina.sh,在裡面加一行:
CATALINA_OPTS=-Dfile.encoding=UTF8
就OK了(具體編碼根據頁面編碼修改)。
以上是網上找的一篇文章
我在自動重啟resin中也遇到了此問題,修改bin/httpd.sh檔案,加上如下代碼:
LANG="en_US.UTF-8"
export LANG