由于种种原因,resin有时会遇到resin down机的情况,比如:java.lang.OutOfMemoryError。这样的问题如果从代码角度来解决问题,也不是一时半会能解决的,应急解决方案是启用resin-pro的ping功能。
<resin:if test=”${isResinProfessional}”>
<ping>
<url>http://localhost:8080/ping.jsp</url>
<sleep-time>1m</sleep-time>
<try-count>5</try-count>
<socket-timeout>30s</socket-timeout>
</ping>
</resin:if>
ping.jsp可随意写一些代码,纯html代码也行,只能服务器能响应返回200。
如果访问resin访问http://localhost:8080/ping.jsp返回不是200 code,然后再重试try-count次,如果依然不响应200,则将自动重启resin服务。
如果在resin tag下配置了:
<system-property mail.smtp.host=”127.0.0.1″/>
<system-property mail.smtp.port=”25″/>
还可以让resin自动给你发个邮件通知你它自动重启过了:
<ping resin:type=”com.caucho.server.admin.PingMailer”>
<url>http://localhost:8080/ping.jsp</url>
<mail-to>[email protected]</mail-to>
<mail-from>[email protected]</mail-from>
<mail-subject>Resin ping has failed for server ${’${’}server.name}</mail-subject>
</ping>
这样配置好了,不管resin出现什么故障,只要resin进程不死,就可以放心睡大觉了。
如果还启用了resin的session持久化存储,用户基本感觉不到服务已经重启过了。
如果启用了resin的cluster,那么请修改httpd.sh,将-server参数加上,不然重启resin后是没有cluster的。