Resin
来自站长百科
Resin是CAUCHO公司的产品,是一个非常流行的支持servlets 和jsp的引擎,速度非常快。对servlet和JSP提供了良好的支持,性能也比较优良,resin自身采用JAVA语言开发。Resin本身包含了一个支持HTTP/1.1的WEB服务器。虽然它可以显示动态内容,但是它显示静态内容的能力也非常强,速度直逼APACHE SERVER。许多站点都是使用该WEB服务器构建的。
基本介绍[ ]
- Resin也可以和许多其他的WEB服务器一起工作,比如Apache server和IIS等。Resin支持Servlets 2.3标准和JSP 1.2标准。熟悉ASP和PHP的用户可以发现用Resin来进行JSP编程是件很容易的事情。
- Resin支持负载平衡(Load balancing),可以增加WEB站点的可靠性。方法是增加服务器的数量。比如一台SERVER的错误率是1%的话,那么支持负载平衡的两个Resin服务器就可以使错误率降到0.01%。
详细介绍[ ]
Resin服务器平台介绍简介[ ]
- Resin提供了最快的jsp/servlets运行平台。在java和javascript的支持下,Resin可以为任务灵活选用合适的开发语言。Resin的一种先进的语言XSL(XML stylesheet language)可以使得形式和内容相分离。 如果您选用jsp平台作为internet商业站点的支持,那么速度、价格和稳定性都是要考虑到的,resin十分出色,表现更成熟,很具备商业软件的要求。而且,它是全免费的。
- 从站点下载的就是完整版本。所以值得向您推荐! 相对于tomcat3.1,后者更象是一个正在研究的项目。目前resin可以支持sun的j2ee,而tomcat不能直接支持,而j2ee是基于java服务器端大系统的基础。
- Resin3 之后已经不在是一个简单的jsp容器,并且支持ejb,jta等企业功能。目前resin4 (2010年后已经比较稳定)性能更是优秀。并且已经支持servlet 3.0标准. pro版本是收费版本,支持负载均衡和文件缓存。很多大型门户网站都采用pro版本作为应用服务器.
- tomcat目前版本6.x也已经发展成为一个快速稳定的轻巧的jsp容器。和resin是不同的发展方向。tomcat6并不支持ejb,jta等高级功能,需要自己扩展,比较麻烦。但支持负载均衡。
- CAUCHO公司,还为resin添加了php解析执行功能。能够运行php程序。但相对 php的原生版本还是有一定差距。
resin 普通版本和pro版本主要区别[ ]
- 但普通版本独立作为web服务器性能就要差一些。当然可以使用apache+resin的方案借助apache的缓存功能提高性能。 但负载均衡就是普通版不能比的了。
Tomcat 和 Resin 比较[ ]
- 很多人说 Resin 速度比 Tomcat 快,而 Tomcat 更加符合标准,可定制性更强;另外利用 Tomcat 的 NIO Connector ,性能完全不输给 Resin。那么,还有什么因素决定你的选择呢?
- 在多个网站中,有使用 Tomcat 的,有使用 Resin 的,但更多的 Tomcat,都是启用了 NIO Connector 的。Resin 使用的是 3.0 的版本、Tomcat 是 6.0。二者在稳定性上都没有任何问题、性能在访问量不大的话,都没有多大的差别。
- 不过 Resin 在一台机器上配置多个运行实例时,稍显麻烦,不像Tomcat复制多份,修改个端口即可,完全独立。
- 另外在最新的 Resin 3.1 / 3.2 中,会自动对URL进行解码处理,导致原来在Tomcat 和 Resin 3.0 上运行正常的程序,到了新版本会有部分乱码的现象。可能 Resin 想让程序更加简单些吧?
- 另外从 Resin 网站上的 ChangeLog 看到,Resin最近好像把注意力放在了 PHP 的引擎改进上(不知道谁会用 Resin 来跑 PHP 呢?), Java 本身少有改动。当然了 Tomcat 也很久没发布新版本了。
常见问题[ ]
Resin停止响应[ ]
●可能是一个线程死锁的问题,应该进行线程转储。 ●启用完全调试日志模式,检查日志最后的纪录看看发生了什么。
Resin不停重启动[ ]
●启用完全调试日志模式,检查记录看看Resin为什么不停的重启它。
java.lang.OutOfMemoryError错误[ ]
●使用JVM启动参数增加堆(heap)内存。 ●转储堆,看看那个对象无法被垃圾回收器无法回收。 ●转储线程,检查占用着对象的不能释放的线程
- 一个OutOfMemoryError错误通常意味着堆(heap)内存被用尽。一般是应用程序代码保持了对不在使用的对象的引用,垃圾回收器无法对其进行回收。转储堆,能够查到什么代码和什么种类的对象被占用了。
- 如果对转储或者其它监视工具显示服务器和你的程序实际没有超出堆内存,那么OutOfMemoryError意味着JVM超出了虚拟内存,也就是底层的malloc()调用失败。
JVM无法进行堆内存分配[ ]
●线程,特别是线程堆占用虚拟内存。 ●JNI库可能调用malloc或者nmap占用虚拟内存。这包括很多数据库驱动,也包含一些Resin使用的JNI代码。 ●对于.jar/.zip文件,JDK要分配虚拟内存。如果你打开了大量的jar文件,你可能会遇到问题。可以想到用于打开jar的getResourceAsStream没有关闭将会耗尽.jar内存。
运行一会儿,服务器开始变得非常慢[ ]
● 这可能是一个垃圾回收问题。如果你的内存缺乏,然后又创建了大量的对象,这导致垃圾回收器耗尽CPU。如果你内存溢出,JVM将会慢慢停止(连续地进行垃圾收集)直到它死亡。
○ 监视垃圾收集。 ○ 转储堆,看看是否是有对象无法被回收。 ○ 参看JVM垃圾回收参数调整的文档获得更多垃圾回收的信息。
● 可能有一个死循环的线程或者一个请求耗尽资源。回应一个请求的线程如果不能返回,Resin就没法再次利用它,那么可用来服务的线程就会越来越少。
○ 进行线程转储,检查可能占用对象的无法释放的线程。