[开发]Resin 4.0.15配置优化的一个建议

郑昀 201102

早先说过线上Resin的配置文件中要增加线程池大小、各种timeout参数(resin 4.0.15的默认配置文件肯定没有这些参数,需要另行增加)。

在resin 4.0.10里,有这么一个bug,thread-max的数量设置没有起作用:http://bugs.caucho.com/view.php?id=4251 ,但后面到了resin 4.0.15应该就修复了。

下面内容会给出背景介绍以及建议配置

 

1、背景:

郑昀认为,要综合考虑resin线程池大小、“-Xmx :JVM最大可用内存”、“-Xms:初始堆大小”、“-Xmn:Young Generation的heap size”参数互相匹配。(JVM有2个GC线程。第一个线程负责回收Heap的Young区。第二个线程在Heap不足时,遍历Heap,将Young 区升级为Older区。Older区的大小等于-Xmx减去-Xmn,不能将-Xms的值设的过大,因为第二个线程被迫运行会降低JVM的性能。)

来避免线上resin服务反复出现以下异常:

OutOfMemoryError: Java heap space

OutOfMemoryError: PermGen space

 

2Resin.xml就可以设置JDK参数:

郑昀注意到,Resin 4.0已支持把JDK参数加入resin配置文件resin.xml里。

参考resin的帮助文档

『JDK arguments

Resin 4.0 has moved all JDK arguments into the resin.xml file, in the <jvm-arg> tag. Because the Resin 4.0 watchdog starts each Resin server instance, it can pass the arguments defined in the configuration file to the JVM. By moving the Java arguments to the configuration file, server configuration is easier and more maintainable.

 

3、建议规则:

1、 Server端JVM最好将-Xms和-Xmx设为相同值。为了优化GC,最好让-Xmn值约等于-Xmx的1/4

2、 通过增大 “-XX:PermSize”和“-XX:MaxPermSize”这两个参数来避免出现JVM内存永久保存区域溢出引发Resin的500错误。(郑昀认为,因为线上用了spring+struts,这些框架用到大量动态class,ClassLoader是把这部分内存放在PermGen space里的。而JVM的GC是不会清理PermGen space的。这样容易导致线上应用报告PermGen space内存溢出。)

 

4、建议resin配置:

所以,郑昀建议线上部署的Resin 4.0.15的resin.xml中增加如下配置节点:

<server-default>

    <jvm-arg>-Xms1024m</jvm-arg>

    <jvm-arg>-Xmx1024m</jvm-arg>

    <jvm-arg>-Xmn256m</jvm-arg>

    <jvm-arg>-XX:PermSize=128m</jvm-arg>

<jvm-arg>-XX:MaxPermSize=256m</jvm-arg>

    <thread-max>1024</thread-max>

    <socket-timeout>30s</socket-timeout>

    <keepalive-max>512</keepalive-max>

    <keepalive-timeout>60s</keepalive-timeout>

</server-default>

请提反馈意见。谢谢。

时间: 2024-12-21 14:23:29

[开发]Resin 4.0.15配置优化的一个建议的相关文章

[开发]Resin 4.0.15重启时常见问题

郑昀 201102 现象: 下面是偶然出现的Resin错误日志,郑昀的结论是不必过于担心下面这个错误,但最好能修改配置: 『 [2011/02/24 22:11:20.593] {} HmtpServlet[WebApp[production/webapp/admin.resin/ROOT]] requires an active com.caucho.security.Authenticator because HMTP messaging requires authenticated log

[开发]resin+spring+struts配搭在线上常见的三个问题

郑昀 201102 1.文件句柄数问题 现象1:访问页面出现500错误,错误描述为:java.lang.NoClassDefFoundError,后面跟的类名各式各样不一一列举了. 现象2:Resin被Wathcdog自动重启,日志中表明这是因为:Resin shutdown from out of file descriptors. 分析:由于Linux默认文件句柄限制为1024(通过命令ulimit –n来查看),所以当Web Server应对高负载起了大量线程,incoming socke

WSE3.0构建Web服务安全(3) WSE3.0策略配置、证书、签名与实例开发

继WSE3.0构建Web服务安全(1):WSE3.0安全机制与实例开发和WSE3.0构建Web服务安全(2):非对称加密.公钥.密钥.证书.签名的区别和联系以及X.509 证书的获得和管理之后,今天我们继续WSE3.0构建Web服务安全系列文章的第3节:WSE3.0策略配置与实例开发.本节主要讲解如何通过WSE3.0策略配置工具实现Web服务安全,本在全文附带代码讲解.本节结构为1.WSE3.0策略工具介绍2.如何使用WSE3.0策略工具3.代码实现与分析4.总结.最后附上代码供大家下载. 通过

Android零基础入门第13节:Android Studio配置优化,打造开发利器

原文:Android零基础入门第13节:Android Studio配置优化,打造开发利器 是不是很多同学已经有烦恼出现了?电脑配置已经很高了,但是每次运行Android程序的时候就很卡,而且每次安装运行程序都要等待很长时间,如果是在开发后期需要不停的修改代码运行看效果,这必定会影响工作效率. 有什么办法可以改善一下这些问题呢?方法是肯定会有的,接下来通过两期来从两个维度来提高效率.今天首先来优化配置我们的Android Studio开发工具,将一些使用很少但占有内存的插件屏蔽,将影响效率的地方

Java开发环境Tomcat (7.0)数据源配置教程

Tomcat的Java Web容器下配置DataSource(数据源)对象.JDBC中的javx.sql.DataSource接口负责建立于数据库的连接,程序中直接从数据源中获取数据库连接.DataSource对象由Servlet容器Tomcat进行管理,其实获取数据库连接是从连接池中选取空闲连接.它基于Java中的JNDI(Java 命名与目录接口)来实现. 一.所有项目共用一个连接池 1.配置数据源context.xml: 在tomcat 的conf 目录下有context.xml 文件,这

Android4.0开机启动速度优化过程经验总结

Android4.0开机启动速度优化过程经验总结         笔者EDE101使用的平台是:A10+android4.0.4+16GB NAND+1G DDR+(1280 X RGB X 800).项目进入收尾阶段,需要着重解决一下开机速度的问题,客户反映还是太慢了一点,当然我们得列入高优先级重点攻关解决了.优化开机速度前,平均android启动速度大概在39秒样子,A10跑1G.以下测试开关机都是按电源键正常操作.系统突然掉电的情况下,重新开机文件系统需要做recovery,在EDE101

IIS服务器与web.config配置优化指南

1.修改IIS最大工作进程数 a. 请考虑以下几点: 1.每一个工作进程都会消耗系统资源和CPU占用率:太多的工作进程会导致系统资源和CPU利用率的急剧消耗: 2.每一个工作进程都具有自己的状态数据,如果Web应用程序依赖于工作进程保存状态数据,那么可能不支持使用多个工作进程. 3. 成资源竞争,让多个工作进程运行同一个应用程序会造成资源竞争 b. 修改ISS最大工作进程数提高该应用程序池处理请求的性能 1.在IIS 6.0的Web园(Web Garden)中,指定用于某个应用程序池的工作进程的

Android零基础入门第6节:配置优化SDK Manager,正式约会女神

原文:Android零基础入门第6节:配置优化SDK Manager,正式约会女神 在前几期中总结分享了Android的前世今生.Android 系统架构和应用组件那些事.带你一起来聊一聊Android开发环境,上两期分别养成高富帅.轻松邂逅女神,那么本期开始正式约会白富美. SDK Manager.exe 是ADT Bundle根目录下的一个SDK 管理程序,该程序主要负责下载.更新.删除与sdk 相关的文件. 由于谷歌目前不推荐使用Eclipse,已经停止了对ADT的更新,所以ADT Bun

Navicat for MySQL 9.0.15 增加多项新功能

Navicat是一个强大的MySQL数据库管理和开发工具.Navicat为专业开发者提供了一套强大的足够尖端的工具,但它对于新用户仍然是易于学习. Navicat 9.0.15 新增的功能包括: -表单检视(新增) -虚拟群组(新增) -自动完码(新增) -排程工作结果自动传送电子邮件(新增) -查询. 检视及事件自动完码(新增) -报告可汇出成各种格式,PDF, Excel, HTML 等(新增) -超时自动重新连接到SQL服务器 -数据和结构同步 -导出注册文件以传送到另外的计算机 -新查询