方寸心间

一路走,十年不回头

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
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       参考资料
1.http://caucho.com
9       术语和附录
1.Resin:The Resin® high-performance, open source application server features load balancing for increased reliability. Caucho's QuercusTM is a fast, 100% Java implementation of the PHP language allowing developers to use PHP flexibility for the web interface and Java for stability
posted on 2008-07-08 17:28  方寸心间  阅读(3085)  评论(0编辑  收藏  举报