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的。