resin3的优化配置
resin3的优化配置
说明:
本文是在apache2+resin3(开源版)环境下的配置,主要是对resin3配置进行了分析,详细调试请见caucho-doc ,apache2的调优见apache的man文档。实践总结,如转载请注明出处--2hei.net 谢谢.
Using Resin(R) under the GNU Public License (GPL).
See http://www.caucho.com for information on Resin Professional,
including caching, clustering, JNI acceleration, and OpenSSL integration.
resin配置文件: resin.conf
1、dependency-check-interval 参数调整
resin检查系统配置及java、jsp、resin.conf等文件的时间间隔。
默认值为2秒,适合开发及调试环境,如果是正式环境尽量把参数调大或者直接改为-1,不允许检查,也就是禁止了热部署。
<dependency-check-interval>-1s</dependency-check-interval>
2、缓存
改变cache-mapping的值:
<cache-mapping url-pattern="/" expires="5s"/>
<cache-mapping url-pattern="*.gif" expires="60s"/>
<cache-mapping url-pattern="*.jpg" expires="60s"/>
<cache-mapping url-pattern="*.png" expires="60s"/>
3、jvm优化
jvm需要根据你的系统配置及应用来调整。
JVM OPTION PASSED TO RESIN MEANING
-Xms initial java heap size
-Xmx maximum java heap size
-Xmn the size of the heap for the young generation
将-Xms和-Xmx设置为一样大小是不错的选择。
如: bin/httpd.sh -Xms500M -Xmx500M -Xmn100M
更多的关于jvm优化参数如:young generation、Eden generation、older generation可见
Sun documentation on garbage collection
jvm的监控,google一下有很多的工具,如:jconsole jstat jstack
jconsole的使用见我的另外一篇文章 《使用Jconsole对java的内存使用情况(JVM)进行监控》
$jps
1229 Jps
1003 Resin
973 resin.jar
$jmap 973
Attaching to process ID 973, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 1.5.0_16-b02
0x0000000040000000 64K /home/jdk1.5.0_16/bin/java
0x00000030b2a00000 127K /lib64/ld-2.5.so
0x00000030b2e00000 1647K /lib64/libc-2.5.so
0x00000030b3200000 22K /lib64/libdl-2.5.so
0x00000030b3600000 600K /lib64/libm-2.5.so
0x00000030b3a00000 138K /lib64/libpthread-2.5.so
0x00000030b5a00000 111K /lib64/libnsl-2.5.so
0x00002aaab46ad000 26K /home/jdk1.5.0_16/jre/lib/amd64/libmanagement.so
0x00002aaab49de000 79K /home/jdk1.5.0_16/jre/lib/amd64/libnet.so
0x00002aeeac3c1000 9933K /home/jdk1.5.0_16/jre/lib/amd64/server/libjvm.so
0x00002aeeacd46000 43K /home/jdk1.5.0_16/jre/lib/amd64/native_threads/libhpi.so
0x00002aeeace61000 52K /lib64/libnss_files-2.5.so
0x00002aeead06c000 58K /home/jdk1.5.0_16/jre/lib/amd64/libverify.so
0x00002aeead17b000 171K /home/jdk1.5.0_16/jre/lib/amd64/libjava.so
0x00002aeead2a5000 78K /home/jdk1.5.0_16/jre/lib/amd64/libzip.so
jstat -gc 1489 1000 3
S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT
43648.0 43648.0 0.0 0.0 262208.0 101390.5 699072.0 18545.6 28032.0 15756.6 1 0.055 1 0.115 0.170
43648.0 43648.0 0.0 0.0 262208.0 101390.5 699072.0 18545.6 28032.0 15756.6 1 0.055 1 0.115 0.170
43648.0 43648.0 0.0 0.0 262208.0 101390.5 699072.0 18545.6 28032.0 15756.6 1 0.055 1 0.115 0.170
jstack 1489
Thread 1495: (state = BLOCKED)
- java.lang.Object.wait(long) @bci=0 (Interpreted frame)
- java.lang.Object.wait() @bci=2, line=474 (Interpreted frame)
- java.lang.ref.Reference$ReferenceHandler.run() @bci=46, line=116 (Interpreted frame)
Thread 1489: (state = IN_NATIVE)
- java.net.SocketInputStream.socketRead0(java.io.FileDescriptor, byte[], int, int, int) @bci=0 (Interpreted frame)
- java.net.SocketInputStream.read(byte[], int, int) @bci=84, line=129 (Interpreted frame)
- java.net.SocketInputStream.read() @bci=23, line=182 (Interpreted frame)
- com.caucho.server.resin.Resin.waitForExit() @bci=304, line=1265 (Interpreted frame)
- com.caucho.server.resin.Resin.main(java.lang.String[]) @bci=42, line=1367 (Interpreted frame)
4、JNI加速
resin不使用NIO而是使用了JNI的方式使用本地码的方式来提升效率,经验证,resin使用JNI的效率要高于使用NIO,
使用JNI是需要对resin进行编译,在./configure时把jni编译进去,
./configure --enable-jni 美中不足的是Resin Professional版本才提供此项功能。
下面是resin-doc的说明:
Resin does not use NIO - it uses JNI to handle low-level I/O calls with native code. The performance using this method was found to be much better than nio.
5、jsp第一次编译的处理
一般来讲,第一次访问jsp会自动进行编译,如果更新了过多的jsp、且系统访问很大的话,重启resin容易造成负载过高。
下面配置是启动app-server时,对所有的jsp进行编译,编译完毕后启动监听,这样启动时间会长一些,但是可以防止第一次访问编译造成系统负载大。
<listener>
<listener-class>com.caucho.jsp.JspPrecompileListener</listener-class>
<init>
<extension>jsp</extension>
<extension>jspx</extension>
</init>
</listener>
6、resin 与apache 性能的比较
resin3单独使用时性能也是不错,当然也可以跟apache配合使用。下面是resin-doc中的说法:
For JSP and Servlets, Resin standalone is certainly faster than Resin/Apache. Because of the extra overhead of the Resin/Apache connection, the Resin/Apache configuration is necessarily slower than Resin standalone.
可以看出各有优劣,
apache对于静态页面来说比较快。如果使用了SSL,apache+resin要比resin单独使用快一些,更为重要的是resin3的开源版本不支持ssl。
7、resin-server TIME_WAIT 过多的处理
thread-max指定了最大连接数,socket-timeout是socket超时时间
keepalive-max指定了长连接的数量,这是可以重复使用的连接,netstat -an时系统可以看到响应数量的ESTABLISHED状态
设定keepalive-max和把keepalive-timeout调小可以减少TIME_WAIT的数量。
<thread-max>256</thread-max>
<socket-timeout>65s</socket-timeout>
<keepalive-max>128</keepalive-max>
<keepalive-timeout>120s</keepalive-timeout>
一般来讲如果是Resin standalone方式,调整timeout并不是很重要,如果是apache+resin的方式,而且apache压力很大的情况下,需要调小timeout的值。
load-balance-idle-time是用来设置load-balance和分布式session的关闭时间,默认时间为keepalive-timeout - 1s
<load-balance-idle-time>100s</load-balance-idle-time>
8、关于watchdog
resin3启动是多了一个watchdog的进程。可以单独启动也可以跟随resin.jar一起启动,主要是用来监控resin jvm实例,在必要的时候重启。
<watchdog-jvm-arg>-Dcom.sun.management.jmxremote</watchdog-jvm-arg>
<watchdog-port>6600</watchdog-port>
查看 watchdog 状态
java -jar lib/resin.jar status
Resin/3.1.6 status for watchdog at 127.0.0.1:6600
server '' : active
password: missing
user: root
root: /home/resin/
conf: /home/resin/conf/resin.conf
来源:http://www.2hei.net/mt/2008/11/resin3-tuning.html
转载于:https://www.cnblogs.com/momofan/archive/2012/08/13/2636184.html
resin3的优化配置相关推荐
- nginx 带宽_Nginx优化配置,轻松应对十万并发
Nginx现在已经是最火的web服务器之一,尤其在静态分离和负载均衡方面,性能十分优越.接下来我们主要看下Nginx在高并发环境下的优化配置,主要是针对 nginx.conf 文件的属性设置.我们打开 ...
- Hadoop Yarn内存使用优化配置
第一部分Hadoop Yarn内存使用优化配置 在Hadoop2.0中, YARN负责管理MapReduce中的资源(内存, CPU等)并且将其打包成Container. 这样可以精简MapReduc ...
- 【Windows10】我的电脑从新装到优化配置
[Windows10]我的电脑从新装到优化配置 必装软件 Visual Studio Microsoft VS Code Microsoft Expression Design 4 Notepad2- ...
- Nginx 服务并发过10万的Linux内核优化配置
以下Linux 系统内核优化配置均经在线业务系统测试,服务器运行状态良好,用了一些时间整理,现和大家分享一下,如有那位高人看到配置上有问题,请给与指出! Controls the use of TCP ...
- Nginx静态资源优化配置之sendfile
静态资源优化配置语法 Nginx对静态资源如何进行优化配置.这里从三个属性配置进行优化: sendfile on; tcp_nopush on; tcp_nodeplay on; (1)sendfile ...
- SDE+ORACLE优化配置
原文 SDE+ORACLE优化配置 SDE的性能取决于: 首先操作系统的性能:其次是Oracle的性能,再次是SDE的性能. 第一:操作系统,无非是内存.CPU.带宽等. 可以有待提高的地方:第一.硬 ...
- 用Zend Encoder加密PHP文件和PHP 优化配置
在发布一个你写好的PHP程序时,你是不是担心自已辛苦写出来的成果会被别人占为已有呢?其实我们可以用Zend Encoder为我们的PHP文件加上一层保护壳. 软件版本:2.0.1 软件大小:10.2M ...
- gin 怎么通过 post 发送结构体_Go Web 框架 Gin 实践12—优化配置结构及实现图片上传...
Go语言中文网,致力于每日分享编码.开源等知识,欢迎关注我,会有意想不到的收获! 项目地址:https://github.com/EDDYCJY/go-gin-example 如果对你有所帮助,欢迎点 ...
- linux内核优化项,Linux内核优化配置
Linux内核优化配置 1.文件限制 ·每建立一个TCP连接,都会生成一个文件句柄,当无法创建文件时,往往会抛出emfile的错误. ·可通过命令ulimit -n查看,linux下默认一般为1024 ...
最新文章
- Linux(debian)的网络内核参数优化来提高服务器并发处理能力
- 自定义PopupWindow
- 浅析Java.lang.Runtime类
- linux tar.gz文件安装
- ORACLE开发:创建与管理表空间和数据文件1
- Bootstrap 表格行的样式
- [LeetCode]:116:Populating Next Right Pointers in Each Node
- 操作系统学习(十三) 、中断和异常
- myeclipse8.5 配置pydev环境
- SpringBoot-项目2-收货地址(新增,修改,删除,设为默认收货地址)
- 计算机怎么格式化电脑吗,电脑怎么格式化
- 求解旋转图像的最大内接矩形
- 【python】jiaba分词,停用词分享,stopwords
- Java定义获取所有偶数元素集合的方法
- 【Touch】触摸事件onTouch
- python 下如何播放mp3
- 对CreateCompatibleDC的粗浅认识
- 一堂难忘的计算机课作文,难忘的一堂课作文7篇
- 对随机变量值域的思考
- oracle vbo4582,4582是什么意思
热门文章
- html区分大小写字母吗,javascript变量区分大小写吗?
- 优秀linux系统设计,Linux系统下设计优秀实用程序的艺术
- 为了在简历上写掌握【Java虚拟机JVM】,做了该篇总结
- SpringMVC中JSON处理
- keras笔记(4)-使用Keras训练大规模数据集
- 百面机器学习 #3 经典算法:01-1 线性可分(硬间隔)支撑向量机SVM
- python安装 + pycharm安装和入门学习 +安装配置TensorFlow
- 08_提升方法Boosting2_统计学习方法
- 浅谈:云桌面在我国高校的应用前景
- es-03-DSL的简单使用