resin的配置【转】

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, 删除:

- <resin:import path="${__DIR__}/health.xml"/>

2).LoadBalance

修改resin.xml, 删除:

- <web-app id="">

-    <resin:LoadBalance regexp="" cluster="app"/>

- </web-app>

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的配置)

把<server-multi id-prefix="app-" address-list="${app_servers}" port="6800"/>改成:

<server-multi id-prefix="app-" address-list="127.0.0.1" port="6801"/>  

2).修改WatchDog端口6600 

<server-multi id-prefix="app-" address-list="127.0.0.1" port="6801">  

    <watchdog-port>6601</watchdog-port>  

</server-multi>  

3).修改应用端口8080(不会覆盖resin.properties中app.http的配置,会新监听一个端口8081)

<server-multi id-prefix="app-" address-list="127.0.0.1" port="6801">  

    <watchdog-port>6601</watchdog-port>  

    <http address="*" port="8081"/>  

</server-multi>  



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相关配置 

  <resin:if test="${resin_doc}">  

    <web-app id="/resin-doc" root-directory="${resin.root}/doc/resin-doc"/>  

  </resin:if>  



三,自定义配置

1,默认在resin.xml中的配置,默认host app根目录配置如下:

<web-app id="/" root-directory="webapps/ROOT"/>



2,虚拟目录配置:

在webapps/lee目录中创建index.html文件,需要通过http://domainname/index/index.html访问到该文件:

    <host id="" root-directory=".">
      <web-app id="/" root-directory="webapps/ROOT"/>
      <web-app id="/index" root-directory="webapps/lee"/>
    </host>



3,基于多host的配置:

例如通过域名http://www.test1.com访问webapps/test1目录内容,而http://www.test2.com访问webapps/test2中内容:

<host id="www.test1.com" root-directory=".">

<web-app id="/" root-directory="webapps/test1"/>

</host>

<host id="www.test2.com" root-directory=".">

<web-app id="/" root-directory="webapps/test2"/>

</host>



4.防止避免hash collision dos攻击 

在web-app中加指令form-parameter-max 用来限制每次post submit的参数个数 

<web-app id="/" root-directory="/data/www/cms">  

    <form-parameter-max>100</form-parameter-max>                         

</web-app>  



5.自定义web app日志 

设置log切割时间为1天:

<web-app id="/" root-directory="webapps/ROOT">

  <form-parameter-max>100</form-parameter-max>
  <stdout-log path="log/stdout.log" rollover-period="1D" timestamp="[%H:%M:%S.%s] "/>
  <stderr-log path="log/stderr.log" rollover-period="1D" timestamp="[%H:%M:%S.%s] "/>
  <access-log path="/opt/access.log"
             archive-format="access-%Y%m%d.log.gz"
             format='%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"'
             rollover-size="10mb"
             rollover-period="1D"/>
</web-app>

也可以把access-log设置成每小时切割一次,配置如下:

<access-log path-format="/opt/access.log.%Y%m%d_%H" rollover-period="1h"/>



6,resin多端口的配置

Resin4可以同时开启多个端口的服务,在resin.xml中一个cluster就代表一个端口应用,故想要多端口只要在resin域中配置多个cluster就行了,核心配置如下:(以开启2个端口为例)

  <cluster id="app">
    <server-multi id-prefix="app-0" address-list="127.0.0.1" port="6801">
      <http address="*" port="8081"/>
    </server-multi>
    <host id="" root-directory=".">
      <web-app id="/lee" root-directory="webapps/lee"/>
    </host>
  </cluster>
<cluster id="qd">
   <server-multi id-prefix="qd-0" address-list="127.0.0.1" port="6802">
    <http address="*" port="8082"/>
   </server-multi>
    <host id="" root-directory=".">
           <web-app id="/lee" root-directory="webapps/lee"/>
    </host>
  </cluster>

启动命令:

# 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 <server> or <server-multi>
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域中加入类似如下:

<server-default>
      <jvm-arg>-Xmx4096m</jvm-arg>
      <jvm-arg>-Xms4096m</jvm-arg>
      <jvm-arg>-Xss128k</jvm-arg>
      <jvm-arg>-XX:MaxPermSize=256m</jvm-arg>
      <jvm-arg>-XX:NewSize=768m</jvm-arg>
      <jvm-arg>-XX:SurvivorRatio=4</jvm-arg>
      <jvm-arg>-XX:+UseParNewGC</jvm-arg>
      <jvm-arg>-XX:+UseConcMarkSweepGC</jvm-arg>
      <jvm-arg>-XX:CMSFullGCsBeforeCompaction=10</jvm-arg>
      <jvm-arg>-XX:-CMSParallelRemarkEnabled</jvm-arg>
      <jvm-arg>-XX:CMSInitiatingOccupancyFraction=75</jvm-arg>
      <jvm-arg>-XX:+UseCMSCompactAtFullCollection</jvm-arg>
      <memory-free-min>1M</memory-free-min>
      <thread-max>1024</thread-max>
      <socket-timeout>65s</socket-timeout>
      <keepalive-max>128</keepalive-max>
      <keepalive-timeout>15s</keepalive-timeout>
    </server-default>

解释:

-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的最大保持时间

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值