Resin服務器配置指南

1       修改歷史

 

版本
修改歷史
作者
描述
工作時間(h)
V0.1
2007-6-7
張樂雷
創建文檔得基本結構、基本流程
0.5
V0.1.1
2007-6-11
張樂雷
增加了對: 日誌配置的詳細解析。
0.5
V0.2
2007-7-4
張樂雷
增加:session-config的配置解釋
0.1
V0.3
2007-8-5
張樂雷
增加:resin概念解釋
0.1
V0.4
2007-8-31
張樂雷
增加:常見問題中,集成配置方法
0.1
V0.5
2007-9-10
張樂雷
增加:resin不能啓動問題解決辦法
0.1
V0.6
2007-9-24
張樂雷
增加:最大連接數配置方式。解決了當系統建 立連接導致系統死鎖的問題。
0.2
2       目的和範圍
本文講述了resin服務器配置相關的內容,包括:配置實 例、日誌的配置、超時配置、常見問題和解答等等。
3       Jdk和Resin安裝步驟
1. 下載jdk linux版本, j2sdk-1_4_2_10-linux-i586.bin。
2. 下載resin-2.1.17.tar.gz。或更好版本
3. 直接輸入:j2sdk-1_4_2_10-linux-i586.bin就可以安 裝成功。本身它有安裝腳本。
4. 修改用戶根目錄下配置文件。 (1)ls -a 查看文件 (2)vi   .bash_profile   添加:export JAVA_HOME=/home/usboss/j2sdk1.4.2_10/     
Note:配置這個文件類似於windows的配置windows的環境變量。修改了這個文件一定要重 新登陸。
5. tar -zxf resin-2.1.17.tar.gz 直接的解壓就可以使用。
4       文件Httpd.sh參數配置解釋
1.文件位置:${resin30}/bin/httpd.sh
2.args='-J-server -Xms200m -Xmx1024m -Xloggc:./log/gc.log -XX:MaxNewSize=256m -XX:MaxPermSize=256m -Djava.awt.headless=true'
(1)J-server -Xms200m -Xmx1024m 其中,-Xms200m 表示啓動時,初時內存大小,-Xmx1024m
最大內存佔用大小。
(2)-XX:MaxNewSize=256m -XX:MaxPermSize=256m 表示:內存的永久保存區域的大小
(3)-Djava.awt.headless=true 解決在linux/unix驗證碼圖片不能顯示的問題。
3. 然後,啓動時展示
           java -server -Xms200m -Xmx1024m -Xloggc:./log/gc.log -XX:MaxNewSize=256m -XX:MaxPermSize=256m -Djava.awt.headless=true -Xss1m -Dresin.home=/home/channel/appsvr/resin-3.0.22 -Dserver.root=/home/channel/appsvr/resin-3.0.22 -Djava.util.logging.manager=com.caucho.log.LogManagerImpl -Djavax.management.builder.initial=com.caucho.jmx.MBeanServerBuilderImpl com.caucho.server.resin.Resin -socketwait 35303 -stdout /home/channel/appsvr/resin-3.0.22 /log/stdout.log -stderr /home/channel/appsvr/resin-3.0.22/log/stderr.l
5       查看日誌的方法
1. 可以看logs目錄下 stdout.log的輸出信息。 也可以看log目錄下的。命令是:
實時信息:tail –100f 日誌文 件名 100代表了顯示100行數據
靜態歷史信息:tail –100日誌文件名    100 代表了顯示100行數據
2. 在resin/logs下 的stdout.log是存放這server實時輸出的信息。
3. vi命令可以看日誌,可以 查找等更多的功能。
4. stderr.log表示 錯誤信息的日誌。
6       常見問題和解答
6.1    解決:內存、heap、驗證碼顯示的集成配置配置方式?
1.文件位置:${resin30}/bin/httpd.sh
2.args='-J-server -Xms200m -Xmx1024m -Xloggc:./log/gc.log -XX:MaxNewSize=256m -XX:MaxPermSize=256m -Djava.awt.headless=true'
(1)J-server -Xms200m -Xmx1024m 其中,-Xms200m 表示啓動時,初時內存大小,-Xmx1024m
最大內存佔用大小。
(2)-XX:MaxNewSize=256m -XX:MaxPermSize=256m 表示:內存的永久保存區域的大小
(3)-Djava.awt.headless=true 解決在linux/unix驗證碼圖片不能顯示的問題。
3. 然後,啓動時展示
           java -server -Xms200m -Xmx1024m -Xloggc:./log/gc.log -XX:MaxNewSize=256m -XX:MaxPermSize=256m -Djava.awt.headless=true -Xss1m -Dresin.home=/home/channel/appsvr/resin-3.0.22 -Dserver.root=/home/channel/appsvr/resin-3.0.22 -Djava.util.logging.manager=com.caucho.log.LogManagerImpl -Djavax.management.builder.initial=com.caucho.jmx.MBeanServerBuilderImpl com.caucho.server.resin.Resin -socketwait 35303 -stdout /home/channel/appsvr/resin-3.0.22 /log/stdout.log -stderr /home/channel/appsvr/resin-3.0.22/log/stderr.l
6.2    在linux/windows下,驗證碼圖片不能正常顯示?
答:修改位置:在resin3/bin/httpd.sh文件, 在args位置,增加:-Djava.awt.headless=true
6.3    對於OutOfMemoryError: PermGen space, 如何處理?
答:PermGen space的全稱是Permanent Generation space,是指內存的永久保存區域OutOfMemoryError: PermGen space從表面上看就是內存益出,解決方法也一定是加大內存。說說爲什麼會內存益出:這一部分用於存放Class和Meta的信 息,Class在被 Load的時候被放入PermGen space區域,它和和存放Instance的Heap區域不同,GC(Garbage Collection)不會在主程序運行期對PermGen space進行清理,所以如果你的APP會LOAD很多CLASS的話,就很可能出現PermGen space錯誤。這種錯誤常見在web服務器對JSP進行pre compile的時候。  
    修改位置:在resin3/bin /httpd.sh文件, 在args位置,增加:-XX:MaxNewSize=256m -XX:MaxPermSize=256m
6.4    如何對標準日誌輸出配置大小和天數進行配置?
詳細參見:
在Resin.conf文件中查找
<log name="" path="stdout:" timestamp="[%H:%M:%S.%s] "/>
如果是標準的Resin3.0的默認配置文件,大概第9行左右。
修改爲如下內容:
按日期生成日誌
<log name="" level="all" path="log/stdout.log" timestamp="[%H:%M:%S.%s] "
     archive-format="%Y-%m-%d.stdout.log.gz"
     rollover-period="1W"/>
level日誌級別:off/severe/warning/info/config/fine/finer/finest/all
path日誌文件路徑:log/stdout.log
archive-format歸檔格式:如2007-5-10.stdout.log.gz
rollover-period日誌回滾方式:按天(15D)、按周(1W)、按月(1M)、按小時(1h)等。
按文件大小生成日誌
<log name="" level="warning" path="log/stdout.log" timestamp="[%H:%M:%S.%s] "
     archive-format="%Y-%m-%d.stdout.log.gz"
     rollover-size="10mb"/>
rollover-size每個日誌文件的大小:byte(5000)、kb(128kb)、mb(10mb)
其他參數同上。
按照USBOSS的日誌輸出方式,可能看文件大小比較合適,每個日誌文件10M-20M就差不多了。
6.4.1            指定debug日誌
A useful technique is to enable full debug logging to track down a problem:
<log name='' level='finer' path='log/debug.log'
        timestamp="[%H:%M:%S.%s]"
        rollover-period='1h' rollover-count='1'/>
6.4.2            日誌標準

 

Name
API
Meaning
off

turn off logging
severe
log.severe("...")
a serious failure, likely to prevent normal program execution
warning
log.warning("...")
a potential problem
info
log.info ("...")
informational messages
config
log.config("...")
static configuration messages, meant to assist in debugging problems associated with particular configurations
fine
log.fine("...")
tracing information
finer
log.finer("...")
fairly detailed tracing message
finest
log.finest("...")
highly detailed tracing message
all

all messages should be logged
6.5    當出現內存耗沒、或日誌寫的太快時,如果解決?
答:用top命令來查詢一下全部進程的使用情況,發現有問題的進 程,kill -9 processId。
6.6    當out of memory時,出現死鎖進程,如果解決?
答: 首先用ps –ef|grep java查看進程命令,看系統內存使用情況。如果是存在死鎖進程,可以通過kill -9 PID,來殺死它,然後重啓。如果系統內存很小,可以對$RESION_HOME/bin/httpd.sh內的參數進行調整。
6.7    當resin啓動時,如何指定java的內存大小?
1. Window下內存設置: -J"-server -Xms500m -Xmx1000m”
2. Linux配置: resin3/bin/httpd.sh 中的args。
6.8    Kill了指定的java進程後,resin它又自動的重啓,怎麼kill那?
答: 在httpd.sh文件中,有一個自動重啓的perl腳本。可以通過ps –ef|grep java,來找出誰在調用java進程,發現perl進程在調用java,使用 ps –ef|grep perl,查找出來,先kill掉perl進程。然後再kill java進程。
6.9    查看resin是否是自動重啓?
答: httpd.sh –h,中一個-no-auto-restart : disable automatic server restart,默認是自動重啓的,可以指定這個啓動參數,使得resin不自動重啓。 ps –ef|grep perl,看看這個進程是否是在啓動狀態。是否是讓應用是否重啓,可以根據具體情況來設定。更多信息,可以看wrapper.pl 文件,搜索 keepalive或auto-restart關鍵字,看它的初始參數值。
6.10       Resin不能啓動,報java不能發現?
答:首先,檢查java是否安裝和是否在用戶下的.bash_profile中進行了配置。
其次,如果安裝和配置正確,再檢查用戶是否正確。如果用戶是通過su to Change the effective user id and group id to that of USER. 例如:su –foo。這時執行shell命令:source或者. .bash_profile。
6.11       如何查看resin的命令參數解釋?
答:查看命令參數httpd.sh –h, man httpd.sh,vi http.sh,
6.12       如何配置session的超時時間?
using session-config and session-timeout to control the number of sessions
<web-app id='/dir'>
<session-config>
     <!-- 2 hour timeout -->
     <session-timeout>120</session-timeout>
     <session-max>4096</session-max>
</session-config>
</web-app>
6.13       Resin正常啓動,DB中有用戶,報用戶不存在?
答:resin.conf中,一個conf只能配置一個<jndi-name> 名稱,並且這個名稱必須是唯一的。否則, 前面的將覆蓋前面的 所以導致不能登陸。
6.14       程序的建立連接數多時,系統死鎖?
答:原因是resin.conf中,最大連接數配置的太少。這是可以調節到一個比較大的值。缺省爲128個連接。
<max-connections> configures the maximum number of open connections allowed for Resin's database pool. Sites can use <max-connections> to throttle the number of database connections for an overloaded server. When max-connections is reached and an application calls getConnection , Resin will wait connection-wait-time or until a connection is freed before allocating a new connection.
default 128
6.15       服務器上的resin啓動不了?
答:首先要查看,log/ stderr.log,看看是什麼原因。例如:resin-2.1.17用root用戶啓動過,那麼就會在logs/access.log 日誌,當重新啓 動時,當向access.log文件中寫東西時,將報錯,因爲是不同的用戶建立的這個文件,需要首先刪除這個文件。
7       總結和展望
a)      簡單的總結前面知識
b)      今後的提高部分
8       參考資料
9       術語和附錄
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章