WebLogic与JVM六大疑问
作者:xuejinyoulan 来源:CSDN
疑问一:内存参数设置
在各类JVM下,都提供标准的JAVA运行 -Xms -Xmx参数,当在weblogic中设置-Xms512m -Xmx1024m时,从后台console中观测,weblogic仅仅使用512m初始heap大小,当应用有内存泄漏时或大量用户使用时,512m heap无法满足需要,但weblogic却不会将heap大小在512m-1024m中扩展,此时,weblogic会因内存耗尽而当机;设置-Xmx1024m有什么用?也一直奇怪,在网上搜罗时,总说是要将-Xms与-Xmx设置成一样大,不知道是不是因为-Xmx根本就没法用?
1、-Xmx设置JVM堆的上限内存值,你-Xms512m -Xmx1024m当然一开始只有512m。如果你安装及补丁等正常-Xmx肯定是会生效的。
至于最小和最大值设置成一样这种做法,要视具体厂商的JVM而定,因为每个不同JVM的GC算法和另外一些JVM结构都不同。
疑问二:将verbosegc打开后,一开始就会出现AF ,memory allocate failure,不知如何解释?更为邪乎的是,need 216k 也会分配失败,free的却很多,why?
解答:出现AF非常正常,甚至有时候只need多少字节也有可能。关键要分析AF的频率以及free前后的比例,还有针对AF操作到action多少,以及其他。你可以查对应JVM厂商的文档。
疑问三:当weblogic所有线程都在忙碌时,新的请求进入队列,在很多情况下已经无法使用了,通过怎样的方式可以知道weblogic应用的这一状态,并且可以让其自举?
解答:关于线程池大小的设定,要关联到你的机器硬件配置、用户的使用并发量等多个因素而定,这个你在performance monitor中可以看到。
另外,如果你已经配了足够大的线程池但还是不够用,就需要考虑应用的连接释放是否合理了。
疑问四:weblogic中有2个admin线程,当内存耗尽时,console也得不到响应?怎么不保留一点点给admin?
解答:我不知道“内存耗尽”具体指什么;console如果无法响应,可能是weblogic已经处于无法正常工作状态。
疑问五:使用cluster时,某个managed节点发生异常,如线程或内存耗尽,当新的请求进入时,怎么还会负载到这个处于异常的节点?在overload与HA之间难道不可以交叉一下吗?BMW都出X6了,BEA不知道啥时候出weblogic X1版,不过我想websphere也会有同样的问题。
解答:你在这里出现了cluster和HA两个概念,我不知道你具体做的是什么。但据我们以往的使用情况,正常配置的weblogic cluster是不会将请求发送到处于故障状态的节点的。
疑问六:WEBLOGIC安装
安装时,还得边看文档边安装,前期有大量的系统参数检查,包括补丁等等,在weblogic安装包中,没有提供对各类平台的自动检查功能,工程师安装时,大都能顺利安装上,但问题是跑了一段时间后,发现问题不断,仔细检查后,发现系统某个补丁没有打。在一个平台下安装上让厂商、客户、应用商都前程无忧的weblogic就这样麻烦吗?如果发现安装环境设置有问题,就需要提供一份参数表,供应用商备查,至少心里有底,出了问题做一下参考就行,不用再到网上GOOGLE了。
解答:这个问题解决很简单,BEA有一份supported configuration文档,你可以根据你的实际环境参考这个文档。这是规范的安装方法。规范的安装对于后期应用系统上线后出现的问题的处理是非常有益的。