| 发表于:2007-10-12 10:58:40 楼主 |
目前有报: exception in thread "compilerthread0" java.lang.outofmemoryerror: requested 32756 bytes for chunkpool::allocate. out of swap space? possible causes: - not enough swap space left, or - kernel parameter maxdsiz is very small. --------------------------------------------------------------------------------------------- 经过检查,swap还大把的有。 maxdsiz 设置为2147483648 swapmem_on 也设置为1的。 --------------------------------------------------------------------------------------------- xx xxswap space: xx x xx xx avail: 16384 mb xx x xx xx used: 1798 mb --------------------------------------------------------------------------------------------- 出问题前内存还有大把的空闲。 system: app wed oct 10 14:34:22 2007 load averages: 0.19, 0.16, 0.15 127 processes: 106 sleeping, 20 running, 1 zombie cpu states: cpu load user nice sys idle block swait intr ssys 0 0.17 3.0% 0.0% 0.0% 97.0% 0.0% 0.0% 0.0% 0.0% 1 0.22 4.0% 0.0% 0.0% 96.0% 0.0% 0.0% 0.0% 0.0% --- ---- ----- ----- ----- ----- ----- ----- ----- ----- avg 0.19 3.0% 0.0% 0.0% 97.0% 0.0% 0.0% 0.0% 0.0% memory: 3263472k (3218956k) real, 7660516k (7583204k) virtual, 1499376k free page# 1/13 cpu tty pid username pri ni size res state time %wcpu %cpu command 0 ? 3538 app 152 20 1385m 768m run 1123:34 25.84 25.79 java 0 ? 28832 tomcat 152 20 2973m 1675m run 464:32 13.33 13.31 java 1 ? 2137 root 152 20 306m 93424k run 41:23 1.24 1.23 java 0 ? 2149 root -27 20 17076k 13084k run 23:48 0.75 0.75 cmcld 0 ? 37 root 152 20 9632k 9632k run 5:11 0.49 0.49 vxfsd 1 ? 1724 app 152 24 1219m 183m run 22:09 0.45 0.45 java 0 ? 3781 app 152 24 1210m 174m run 17:35 0.33 0.33 java 0 ? 1287 root 152 20 251m 64744k run 7:09 0.26 0.26 java 1 ? 2320 root 152 20 297m 157m run 4:29 0.20 0.20 java 1 ? 7282 root 152 20 16492k 4112k run 0:23 0.20 0.20 rep_server 描叙:其中tomcat用户的size大小一直在持续增加,每次大概增长4m。res值呈现波浪式变化,有涨有跌。当tomcat用户的size值增加到2950m ,res值增加到1700m左右时,系统报:outofmemoryerror 。几乎每隔10天左右就会出现这个问题。 ------------------------------------------------------------------------------------------------ 另外我的tomcat设置为: java_opts="-xmx2000m -xx:permsize=128m -xx:maxpermsize=256m -dfile.encoding=gbk" 关于这几个值的设置我已经试过很多种组合了。 另外监控jvm的内存分配情况也很正常,最大值为1.7g,但实际应用值为900m ------------------------------------------------------------------------------------------------- 以上是系统环境相关的东东,同时也在程序本身花了工夫去重构代码: 1,关闭未closed的结果集 2,采用复合查询代替原来的多表查询最终组合的方式 3,hibernate查询改为sql查询 等等。 另外也用jprofile 进行了监控,尚未发现可疑之处。 ------------------------------------------------------------------------------------------------- 目前系统每隔10天左右就会报:outofmemoryerror 请大家帮忙看看是哪个地方有问题?若有好的建议也请提出。 谢谢! |
|
|
|
|