|
網誌存檔
熱門網志
|
|
|
本人负责的一个网站不知道为什么,由周一开始,突然间变得很慢,有时则很快.搞来搞去,搞了差不多一个星期(部份时间开发新功能去了).终于找到原因了. 服务器情况: 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查看情况.
看上去也正常.不过free memory 变化的很快,由100多M,突然变到300多M.一开始还以为是程序释放了内存.就不去管他了. 经过好多晚的调度,发现一个规律.当启动resin时,一切正常.证明跟jdk版本无关. 今天早上更新服务器程序时,发现resin目录有个gc.log文件.打开一看.全部是gc的执行记录.很多.于是使用tail命令一下. tail -f gc.log 吓了我一跳,平均每秒就会执行一次gc.问题就在这里.是gc把服务器拖慢了. 于是就把resin的启动参数改一下,把内存改大,gc就不会这么容易触发. -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 -Xms1024m -Xmx1024m 现在好了,CPU占用只有0.1%左右,有时上到30%多,但很快降下来.load average: 0.05, 0.01, 0.00 <---服务器很健康. 利用resin-admin查看情况.
resin平均使用400M左右的内存,一开始只配置了512给她,怪不得老是gc.呵.
|
-------------------------------------------------
| 上一篇:lucene的简单实例<一> | 下一篇:JVM详解之Java垃圾回收机制详解和调优 |

