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
|
|
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
術語和附錄