AIX系统 中启动的 java 小程序 被kill掉 dbcp 连接

apple.zhou 发布于 2012/02/06 10:53
阅读 713
收藏 0

最近在aix服务器启动了一个java小程序,主要是启动一个socket监听端口。

监听银行发过来的报文。

但是小接口占用的内存一直在变大,以每几十KB/五分钟的速度增长,最后被aix 系统自动杀死了。

至于怎么死掉的,我对aix 系统不熟悉,也不太清楚再哪里看错误日志。

以前没有出现这种情况,我们使用DBCP做数据库连接池,为了避免数据库连接池中有空闲连接,

我给DBCP加了一些参数 如下:

initSize 20 

maxSize 30

maxIdel 10

minIdel 5

validationQuery select 1 from dual

//sql检测部分

testOnBorrow false

testOnReturn false

testWhileIdel true

timeBetweenEvictionRunsMillis 5分钟

numTestPerEvictionRun 30 --即最大连接数

是不是这个导致的 小程序占用内存一直增加,请教各位,这个dbcp连接参数设置有问题吗?

然后就是 aix系统为什么会杀死小程序,怎么去设置系统参数,避免这种情况

加载中
0
apple.zhou
apple.zhou
没人晓得啊~~
0
hillshills
hillshills

内存变大的原因,你要分析是不是你程序的问题。

如:

1、是否产生了过多的对象

2、是否程序启动时没加够大的内存?

3、需要垃圾回收机制,即启动时加垃圾回收的参数

 

 

hillshills
hillshills
@于*洋 : 需要加参数的,一旦程序有性能影响,必须加运行参数进行调优,垃圾回收也是内存和优先级的,参数就起到了手动配置的作用。 如:java -XX:MaxTenuringThreshold -XX:+UseConcMarkSweepGC -jar myparam.jar 这两个XX就是java支持的运行参数其中的两个。 具体什么含义你有兴趣可以网上搜索一下。
DB_Terrill
DB_Terrill
Java的垃圾回收机制不是自动的么?我不太清楚,求教下。
apple.zhou
apple.zhou
请问下,垃圾回收机制,我们需要自己加参数吗? java有自己的垃圾回收机制吧 今天查看了下系统启动的程序,不止我启动的服务被杀死了 而且 weblogic服务也被aix 系统杀死了
0
apple.zhou
apple.zhou

weblogic 服务是被同事杀死的 不是系统杀死的 

更正下~

0
大东哥
大东哥
有可能是你java小程序的socket部分出了问题。
0
nubo
nubo
不是aix系统杀死了,而是你的程序崩溃了,先排除是不是你的 socket 程序问题,然后DBCP的连接是否及时进行释放?用visualvm跟踪看看。
0
hillshills
hillshills

引用来自“hillshills”的答案

内存变大的原因,你要分析是不是你程序的问题。

如:

1、是否产生了过多的对象

2、是否程序启动时没加够大的内存?

3、需要垃圾回收机制,即启动时加垃圾回收的参数

 

 

@apple.zhou :
恩,你的socket是作为server端的吧,你看看你的TPS上限是多少。内存不断变大,有很多原因,可能你接收的消息太多,来不及处理(需要改善你程序的性能处理),堆积到aix的系统,使aix被动kill掉你的程序,还有可能是你程序本身的性能问题(如对象不要一直创建,建议重用或相关资源一直没释放),建议你将程序流程根据功能分成每块,看看每块的瓶颈在哪里。
另外,建议你观察内存变化情况,有命令:jdk/bin/jstat -gc 端口号。网上有文章《JVM性能调优》可以参考。
也有工具jprofile观察你程序的性能瓶颈。
0
apple.zhou
apple.zhou

引用来自“hillshills”的答案

引用来自“hillshills”的答案

内存变大的原因,你要分析是不是你程序的问题。

如:

1、是否产生了过多的对象

2、是否程序启动时没加够大的内存?

3、需要垃圾回收机制,即启动时加垃圾回收的参数

 

 

@apple.zhou :
恩,你的socket是作为server端的吧,你看看你的TPS上限是多少。内存不断变大,有很多原因,可能你接收的消息太多,来不及处理(需要改善你程序的性能处理),堆积到aix的系统,使aix被动kill掉你的程序,还有可能是你程序本身的性能问题(如对象不要一直创建,建议重用或相关资源一直没释放),建议你将程序流程根据功能分成每块,看看每块的瓶颈在哪里。
另外,建议你观察内存变化情况,有命令:jdk/bin/jstat -gc 端口号。网上有文章《JVM性能调优》可以参考。
也有工具jprofile观察你程序的性能瓶颈。
谢谢~
我将启动的时候内存调大了
/weblogic/bea/jdk142_11/jre/bin/java -jar -Xms1024m -Xmx1024m -XX:NewSize=768M -XX:MaxNewSize=768M -XX:MaxPermSize=256m BAServer20111026ForSS.jar -S-C & 这样内存虽然一直增大
但是没有出现频繁死机的情况 
估计是程序那个地方有内存泄漏~  了解了解jprofile查看下
谢谢了~~~
返回顶部
顶部