resin服务器突然变慢问题解决办法.

  本人负责的一个网站不知道为什么,由周一开始,突然间变得很慢,有时则很快.搞来搞去,搞了差不多一个星期(部份时间开发新功能去了).终于找到原因了.   服务器情况: linux as4 Intel(R) Xeon(R) CPU            5130  @ 2.00GHz 4G内存, 300Gscsi+320GSATA硬盘. resin 3.0.23+ lighttpd   resin启动参数 -server -verbose:gc -Xdebug -Xloggc:gc.log -Djava.awt.headless=true -XX:PermSize=128M -XX:NewRatio=4 -XX:+UseConcMarkSweepGC -XX:MaxPermSize=200m -XX:NewSize=100 -XX:MaxNewSize=128m -Xmn256m -Xms512m -Xmx512m     服务器运行一直很正常,到了周一,网站变慢,CPU占用50%以上,但内存点使用50%,其中大部分是mysql用去了.load average: 10.02, 10.03, 10.00 .     全部程序都测试过.底层代码也查过.JDK换过,RESIN版本换过,mysql配置也换过.问题依然存在.     利用resin-admin查看情况.   Total memory: 501.44Meg Free memory: 350.37Meg      看上去也正常.不过free memory 变化的很快,由100多M,突然变到300多M.一开始还以为是程序释放了内存.就不去管他了.   […]

使用ping功能使resin更健壮

由于种种原因,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的。