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
* 如何对标准日志输出配置大小和天数进行配置? 详细参见:
http://caucho.com/resin-3.0/config/log.xtp#Log-Levels 在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文件中写东西时,将报错,因为是不同的用户建立的这个文件,需要首先删除这个文件。