Resin是CAUCHO公司的产品,是一个非常流行的application server,对servlet和JSP提供了良好的支持,性能也比较优良,resin自身采用JAVA语言开发。
版本区别:
resin 普通版本和pro版本主要区别是 pro支持缓存和负载均衡,并且pro版本收费的。pro因为有强大的cache功能,独立作为web服务器处理静态页面性能都可以和apache有一比。但普通版本独立作为web服务器性能就要差一些。当然可以使用apache+resin的方案借助apache的缓存功能提高性能。 但负载均衡就是普通版不能比的了。
一,安装
配置jdk环境变量:
export JAVA_HOME=/opt/soft/jdk1.7.0_55/
export JRE_HOME=/opt/soft/jdk1.7.0_55/jre
export PATH=$PATH:/opt/soft/jdk1.7.0_55/bin
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib
resin安装:
# ./configure --prefix=/opt/apps/resin-4.0.40 --enable-64bit
# make;make install
二,resin4的基本配置
1,Resin4可以给不同的Web app分配不同的端口,也就是说Resin4可以同时开启多个端口的服务。Resin4配置文件发生了较大变化,分为:
- app-default.xml web应用配置
- cluster-default.xml 专业版使用的集群配置
- resin.xml resin主配置文件
- resin.properties 会被修改的变量
- health.xml 专业版使用的健康检查配置
2,删除/注释resin社区版本不支持的功能
1).health
修改resin.xml, 删除:
-
2).LoadBalance
修改resin.xml, 删除:
-
-
-
3).仅需要保留自己使用的cluster,
其它的可以删除
修改resin.xml, 删除cluster id="web", cluster id="memcached"
3,resin自定义端口
Resin 运行起来后,一般有这么几个端口
WatchDog 的端口,默认6600
Server 监控端口,默认6800
应用的HTTP端口,默认8080
以下操作通过修改resin.xml配置文件完成:
1).修改Server端口6800(会覆盖resin.properties中app_servers的配置)
把
2).修改WatchDog端口6600
3).修改应用端口8080(不会覆盖resin.properties中app.http的配置,会新监听一个端口8081)
4,禁用admin/doc/deploy
1).修改resin.properties,配置如下:
web_admin_enable : false
session_store : false (每个服务器是一个集群,不需要考虑session 持久化)
resin_doc : false
dev_mode:false
2).修改resin.xml,删除resin doc相关配置
三,自定义配置
1,默认在resin.xml中的配置,默认host app根目录配置如下:
2,虚拟目录配置:
在webapps/lee目录中创建index.html文件,需要通过http://domainname/index/index.html访问到该文件:
3,基于多host的配置:
例如通过域名http://www.test1.com访问webapps/test1目录内容,而http://www.test2.com访问webapps/test2中内容:
4.防止避免hash collision dos***
在web-app中加指令form-parameter-max 用来限制每次post submit的参数个数
5.自定义web app日志
设置log切割时间为1天:
format='%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"'
rollover-size="10mb"
rollover-period="1D"/>
也可以把access-log设置成每小时切割一次,配置如下:
6,resin多端口的配置
Resin4可以同时开启多个端口的服务,在resin.xml中一个cluster就代表一个端口应用,故想要多端口只要在resin域中配置多个cluster就行了,核心配置如下:(以开启2个端口为例)
启动命令:
# bash resin.sh start -server qd-0
# bash resin.sh start -server app-0
注意事项:
1),http port和server port必须不同。可以在resin.xml或者resin.properties中配置,resin.xml的配置如上案例。
2),当使用命令# bash resin.sh start -server app或者# bash resin.sh start启动时,会出现以下报错:
Resin/4.0.40: server 'qd' does not match a unique
in /opt/apps/resin-4.0.40/conf/resin.xml
server ids: app0, qd0.
启动时-server的参数必须是id-prefix的值,当id-prefix和cluster的id值相同时,-server的参数默认是app0(如果cluster id是app).
7,jvm启动参数优化
在cluster域中加入类似如下:
解释:
-Xmx:jvm最大可用内存
-Xms:jvm启动时,初始内存大小。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。
-Xss:设置每个线程的堆栈大小。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的
-XX:PermSize:JVM初始分配的非堆内存
-XX:MaxPermSize:非堆内存的最大值。(PermSize和MaxPermSize指明虚拟机为java永久生成对象(Permanate generation)如,class对象、方法对象这些可反射(reflective)对象分配内存限制,这些内存不包括在Heap(堆内存)区之中。)
-XX:NewSize:设置新生代内存大小
-XX:SurvivorRatio:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5
-XX:+UseParNewGC:设置年轻代为并行收集。
-XX:+UseConcMarkSweepGC:设置年老代为并发收集。
-XX:CMSFullGCsBeforeCompaction:由于并发收集器不对内存空间进行压缩、整理,所以运行一段时间以后会产生“碎片”,使得运行效率降低。此值设置运行多少次GC以后对内存空间进行压缩、整理。
-XX:-CMSParallelRemarkEnabled:降低标记停顿
-XX:CMSInitiatingOccupancyFraction=75:CMS堆上, 使用70%后开始CMS收集
-XX:+UseCMSCompactAtFullCollection:打开对年老代的压缩。可能会影响性能,但是可以消除碎片
memory-free-min:强制resin重启时的最小空闲内存
thread-max:resin最大线程数
socket-timeout:套接字最大等待时间
keepalive-max:keepalived连接的最大数量,对网络性能有影响
keepalive-timeout:keepalived的最大保持时间