log配置

Resin中对日志的设置主要有如下参数:log、logger、access-log、stdout-log和stderr-log。
前两个放 在标签,也就是主标签下面,可以输出jdk、resin初始化加载之类的信息;
后面三个*-log放在或下面,access用于HTTP输 出,stdout用于标准输出(System.out),stderr用于错误输出(System.err,对应log4j中的log.error)
例如:
全局配置
 
 
 

name 是指定对各个层次应用进行debugname 设定有几种情况,如: 
Name=’’ name为空,这对所有应用、包括端口全面进行调试记载日志 
Name=’com.caucho.jsp 指定只对jsp进行调试记载日志 
Name=’com.caucho.java 指定只对java类进行调试 
Name=’com.caucho.server.port 指定只对端口、线程进行调试 
Name=’com.caucho.server.port.AcceptPool 指定只对端口线程的创建和释放进行debug 

level 的级别一般有:: 
Off Severe info config fine finer finest all 这几中配置级别; 
Off 关闭日志输出 
Severe 只输出些严重的出错信息 
Info 输出一般的综合信息 
Config 输出配置信息 
Fine 输出resin的跟踪信息 
Finer 输出详细的跟踪信息 
Finest 输出比Finer更详细的跟踪消息、细节问题 
All 输出所有的访问输出消息 

path 输出文件路径指向,可以形式如 path=’stdout:’ 注意后面有冒号;或指定绝对路径path=’/usr/local/resin-3.0.7/log/stdout.log 
Timestamp : 完整的输出日期格式[%Y/%m/%%H:%M:%S.%s]; 

一般设置日志文件一周轮循一次,即 rollover-period=1M  rollover-period=’7D , 当满一周,系统会自动生成新日志记录文件,格式如: stderr.log.20041201 stderr.log.20041208 
rollover-period=’D  
rollover-period=’h 小时 
rollover-period=’W  
rollover-period=’M  

host log配置

     
     
            archive-format="stdout-%Y%m%d.log.gz"
            timestamp="[%Y.%m.%d %H:%M:%S.%s]" 
            rollover-size="10mb"
            rollover-period="1D"/>
     
            archive-format="stderr-%Y%m%d.log.gz"
            timestamp="[%Y.%m.%d %H:%M:%S.%s]" 
            rollover-size="10mb"
            rollover-period="1D"/>
     
            format='%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"'
            rollover-period="1W"/>
   
path: 用于设定日志文件的路径,非常有意思的是它支持所谓的El Variables and Functions 也就是resin中的变量,比如${host.name}就是虚拟站点的id名称,所以如果将它放在<</span>host-default>下面的话,path设置为 logs/${host.name}/access.log的话可以将不同站点的日志存放在不同的目录下面。


archive-format: 这个参数可以设置日志归档的格式,如设置为access-%Y%m%d.log可以在归档的时候自动按日期进行归档命名。另外还有一个特性需要说明的 是,resin竟然支持自动压缩log文件,而且设置的方法非常简单,只要后缀名是gz就可以了,如access-%Y%m%d.log.gz,这样归档 的时候会自动压缩,而且支持windowslinux系统。
format: 用于设置每条日志输出的格式,这个非常简单,而且通常使用系统内置的格式就可以了。
rollover-size: 用来设置归档日志文件的最小尺寸,单位可以设置成kbmb等等,默认为1mb
rollover-period: 用来设置归档日志文件的周期,单位可以是1D(一天)、1W(一周)、1M(一个月)等

2、安全性配置
在webapp标签下,可以有很多种安全性配置,下面介绍ip限制、用户米密码限制两种。
2.1 ip限制
在正常访问的web-app标签下,增加一个security-constrain标签即可,如下:
id="test.com" root-directory=".">
id="/solr" document-directory="/home/server/solr" archive-path="/home/resin/webapps/solr.war"character-encoding="utf-8"> 

/*


192.168.0.0/16
10.0.0.0/8
61.135.255.86

url-pattern是过滤的url
allow标签表示允许访问的ip地址,默认是允许所有的。
还可以配置标签,以拒绝特定的ip。
这里的ip地址格式可以查看wiki : http://zh.wikipedia.org/wiki/IPv4 ,比如:
10.0.0.0/8  专用网络 (私有网络)
192.168.0.0/16  专用网络
xxx.0/16表示这个网段的掩码,前面是16个1,即11111111.11111111.00000000.00000000
即所有192.168开头的私网地址
除了为内网开放ip权限,还可以为外网开放,比如为某个ip开放,61.135.25.3

2.2 用户名密码限制
在正常访问的web-app标签下,增加authenticator、login-config、security-constraint就可以配置用户名密码
id="slave.pic.solr.ws.netease.com" root-directory=".">
id="/solr" document-directory="/home/server/solrslave" archive-path="/home/resin/webapps/solr.war" character-encoding="utf-8"> type="com.caucho.server.security.XmlAuthenticator">   user:pass:cms none   auth-method='basic'/> url-pattern='/*' role-name='cms'/>   

 

3、内存
默认的jvm内存是64M.在许多应用中,该内存太小,不足以支持应用.jvm的内存大小可以在执行java程序时由-X参数来修改.
比如:java -Xss1m -Xms1m -Xmx256m ,java的参数很多,如下:
1、 heap size 
a: -Xmx 
指定 jvm 的最大 heap 大小,如:-Xmx=2g 
b: -Xms 
指定 jvm 的最小 heap 大小,如:-Xms=2g,高并发应用建议和-Xmx一样,防止因为内存收缩/突然增大带来的性能影响
c: -Xmn 
指定 jvm 中 New Generation 的大小,如:-Xmn256m。 这个参数很影响性能,如果你的程序需要比较多的临时内存,建议设置到512M,如果用的少,尽量降低这个数值,一般来说128/256足以使用了。 
d: -XX:PermSize= 
指定 jvm 中 Perm Generation 的最小值,如:-XX:PermSize=32m。 这个参数需要看你的实际情况,可以通过jmap 命令看看到底需要多少
e: -XX:MaxPermSize= 
指定 Perm Generation 的最大值,如:-XX:MaxPermSize=64m 
f: -Xss 
指定线程桟大小,如:-Xss128k,一般来说,webx框架下的应用需要256K。 如果你的程序有大规模的递归行为,请考虑设置到512K/1M。 这个需要全面的测试才能知道。不过,256K已经很大了。 这个参数对性能的影响比较大的。 
g: -XX:NewRatio= 
指定 jvm 中 Old Generation heap size 与 New Generation 的比例,在使用 CMS GC 的情况下此参数失效,如:-XX:NewRatio=2
h: -XX:SurvivorRatio= 
指定 New Generation 中 Eden Space 与一个 Survivor Space 的 heap size 比例,-XX:SurvivorRatio=8,那么在总共New Generation为10m 的情况下,Eden Space为8m
i: -XX:MinHeapFreeRatio= 
指定 jvm heap在使用率小 n的情况下,heap进行收缩,Xmx==Xms 的情况下无效,如:-XX:MinHeapFreeRatio=30
j: -XX:MaxHeapFreeRatio= 
指定 jvm heap在使用率大于n的情况下,heap进行扩张,Xmx==Xms 的情况下无效,如:-XX:MaxHeapFreeRatio=70
k: -XX:LargePageSizeInBytes= 
指定 Java heap 的分页页面大小,如:-XX:LargePageSizeInBytes=128m 
2: garbage collector 
a: -XX:+UseParallelGC 
指 定在 New Generation 使用 parallel collector,并行收集,暂停app threads,同时启动多个垃圾回收thread,不能和 CMS gc 一起使用。系统吨吐量优先,但是会有较长长时间的app pause,后台系统任务可以使用此gc 
b: -XX:ParallelGCThreads= 
指定 parallel collection 时启动的 thread 个数,默认是物理 processor 的个数。
c: -XX:+UseParallelOldGC 
指定在 Old Generation 使用 parallel collector。
d: -XX:+UseParNewGC 
指定在 New Generation 使用 parallel collector,是 UseParallelGC 的 gc 的升级版本,有更好的性能或者优点,可以和 CMS gc 一起使用。
e: -XX:+CMSParallelRemarkEnabled 
在使用 UseParNewGC 的情况下,尽量减少 mark 的时间。
f: -XX:+UseConcMarkSweepGC 
指 定在 Old Generation 使用 concurrent cmark sweep gc,gc thread 和 app thread 并行 ( 在 init-mark 和 remark 时 pause app thread)。app pause 时间较短,适合交互性强的系统,如 web server。
g: -XX:+UseCMSCompactAtFullCollection 
在使用 concurrent gc 的情况下,防止 memory fragmention,对 live object 进行整理,使 memory 碎片减少。
h: -XX:CMSInitiatingOccupancyFraction= 
指示在 old generation 在使用了 n% 的比例后,启动 concurrent collector,默认值是 68,如:-XX:CMSInitiatingOccupancyFraction=70。
i: -XX:+UseCMSInitiatingOccupancyOnly 
指示只有在 old generation 在使用了初始化的比例后 concurrent collector 启动收集。
3、others 
a: -XX:MaxTenuringThreshold= 
指 定一个 object 在经历了 n 次 young gc 后转移到 old generation 区,在 linux64 的 java6 下默认值是 15,此参数对于 throughput collector 无效,如:-XX:MaxTenuringThreshold=31。
b: -XX:+DisableExplicitGC 
禁止 java 程序中的 full gc,如 System.gc() 的调用. 最好加上么,防止程序在代码里误用了。对性能造成冲击。 
c: -XX:+UseFastAccessorMethods 
get,set 方法转成本地代码。
d: -XX:+PrintGCDetails 
打应垃圾收集的情况如:  [GC 15610.466: [ParNew: 229689K->20221K(235968K),0.0194460 secs] 1159829K->953935K(2070976K),0.0196420 secs]。
e: -XX:+PrintGCTimeStamps 
打应垃圾收集的时间情况,如:  [Times: user=0.09 sys=0.00,real=0.02 secs]。
f: -XX:+PrintGCApplicationStoppedTime 
打应垃圾收集时,系统的停顿时间,如:  Total time for which application threads were stopped: 0.0225920 seconds。

resin的内存也可以用这个-X参数来设置,可以在http.sh或者wrapper.pl中,或者在resin.conf中,下面给出在http.sh中的方法:
打开bin/wrapper.pl后找到$JAVA_ARGS一行,默认是空字符串,这里改为
$JAVA_ARGS=="-Xms2560m -Xmx2560m -XX:PermSize=256M -Xmn256m  -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -Xloggc:log/gc.log  "
如果要在bin/httpd.sh中加args,则需要把-XX变成-J-XX,在该文件中有说明。
这样就修改了它使用的内存大小,这些参数可以根据需要修改。
然后ps -ef|grep java 这样就看到启动参数已经改变了。
另外可以在虚拟机中运行一下这俩查看内存的句子哦。
     System.out.println("peak_memory=" + Runtime.getRuntime().totalMemory()/1024/1024 + "M");
     System.out.println(", max_memory=" + Runtime.getRuntime().maxMemory()/1024/1024 + "M");

四、resin优化
下面拷贝一些resin.conf的优化配置
1、优化JVM参数   (这个和第三点说的效果一样,但是resin.conf在linux和windows通用的,但是修改wrapper.pl的方式更方便)
修改resin.conf文件,在节点下增加配置 JVM参数的子节点。 -Xmx和-Xms的值需要根据服务器内存的大小调整,对于多数应用来说,-Xmx配置成1024M,完全能满足使用要求。通常将-Xms与-Xmx选项 的值设置为相同。

    -Xms1024m
    -Xmx1024m
    -Xmn256m
    -XX:PermSize=128m
    -XX:MaxPermSize=256m
    -Dcom.sun.management.jmxremote
   
2、调整图片Cache图片文件的时间

     
     
     
   
3、调整线程池的最大线程数

    1024
   
4、日志输出
如果不配置stdout-log,那么resin会把System.out输出的信息,自动输出到${resinHome}/log/jvm-default.log文件中,且这个文件不会按天存储,随着时间推移,这个文件会越来越大,最后影响系统效率。

   
   
   
5、resin-server TIME_WAIT 过多的处理
thread-max指定了最大连接数,socket-timeout是socket超时时间
keepalive-max指定了长连接的数量,这是可以重复使用的连接,netstat -an时系统可以看到响应数量的ESTABLISHED状态
设定keepalive-max和把keepalive-timeout调小可以减少TIME_WAIT的数量。

在节点下增加配置
10000
      30s
      512
      60s
6、调整检查程序更新时间间隔的配置
Resin 会在一个指定的周期内,检查一下web-app目录下的classes、jsp、jar以及配置文件是否更新,并且根据检查的情况,确定是否重新装载这些 文件。对于生产系统来说,不会经常更新文件,时间间隔应该加长,提高系统的效率。文本框中配置的时间间隔为20分钟。
  1200s

你可能感兴趣的:(log配置)