WEBLOGIC与JVM六大疑问

发布于 2022-08-04 00:34:38 字数 955 浏览 13 评论 5

疑问一:内存参数设置  
在各类JVM下,都提供标准的JAVA运行 -Xms -Xmx参数,当在weblogic中设置-Xms512m -Xmx1024m时,从后台console中观测,weblogic仅仅使用512m初始heap大小,当应用有内存泄漏时或大量用户使用时,512m heap无法满足需要,但weblogic却不会将heap大小在512m-1024m中扩展,此时,weblogic会因内存耗尽而当机;设置-Xmx1024m有什么用?也一直奇怪,在网上搜罗时,总说是要将-Xms与-Xmx设置成一样大,不知道是不是因为-Xmx根本就没法用?
疑问二:将verbosegc打开后,一开始就会出现AF ,memory allocate failure,不知如何解释?更为邪乎的是,need 216k 也会分配失败,free的却很多,why?
疑问三:当weblogic所有线程都在忙碌时,新的请求进入队列,在很多情况下已经无法使用了,通过怎样的方式可以知道weblogic应用的这一状态,并且可以让其自举?
疑问四:weblogic中有2个admin线程,当内存耗尽时,console也得不到响应?怎么不保留一点点给admin?
疑问五:使用cluster时,某个managed节点发生异常,如线程或内存耗尽,当新的请求进入时,怎么还会负载到这个处于异常的节点?在overload与HA之间难道不可以交叉一下吗?BMW都出X6了,BEA不知道啥时候出weblogic X1版,不过我想websphere也会有同样的问题。
疑问六:WEBLOGIC安装
安装时,还得边看文档边安装,前期有大量的系统参数检查,包括补丁等等,在weblogic安装包中,没有提供对各类平台的自动检查功能,工程师安装时,大都能顺利安装上,但问题是跑了一段时间后,发现问题不断,仔细检查后,发现系统某个补丁没有打。在一个平台下安装上让厂商、客户、应用商都前程无忧的weblogic就这样麻烦吗?如果发现安装环境设置有问题,就需要提供一份参数表,供应用商备查,至少心里有底,出了问题做一下参考就行,不用再到网上GOOGLE了。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

自演自醉 2022-08-11 22:25:17

所有的中间件都会有瓶颈的,这些瓶颈不单单是基础的jvm,连接池。往往写的很烂的代码往往是性能瓶颈的根本,我遇到过一个用tomcat,256m内存的应用,能够每天的用户量跑到10w多。我也遇到过用was做的4节点的cluster每个节点都是4g内存每天只能跑9w多用户。当然不排除两个应用的功能的不同,但是当我把jvm的使用信息拉出来作分析的时候发现写的好的代码往往对于jvm的载入的类往往能够得到回收。一个好的应用结构决定了应用的一切。

ˉ厌 2022-08-11 22:24:43

关于确认是否堆有在扩展,我记得weblogic日志中会有信息打印出来的,而且,其实你打开verbose:gc后也能看到。AF我觉得并不是什么错误,AF是在无法获得足够的空闲空间时所触发的一个事件,你说的heap中还有大片的空间可用,我觉得你用的应该是IBM的JDK,这个可能是会存在这种情况的。你加我MSN yexiangfu@hotmail.com,我们可以详细谈。

淡忘如思 2022-08-11 22:14:35

非常感谢yenakata、zszyj。

我们还是探讨一下疑问一,设置了-Xms512m -Xmx1024m,JVM在什么条件下会向系统申请512-1024M的内存空间?有没有真实的案例可供参考?我在主流平台上看到的只是失望。

有几个疑问可能我没有说明确,造成了一些误解。

疑问二:出现AF的根本原因是什么?heap中有大片的空间(大于500m)可以使用,为什么分配512K也会失败?

疑问三:BEA的JRockit可以做到,但在AIX下没有JRockit。

疑问五:我指的异常的节点不代表它不能工作,只是有限用户可以使用,对于单节点的失效,cluster是可以做到负载到有效节点上的。

苄①跕圉湢 2022-08-11 21:57:54

原帖由 dialyes 于 2008-6-11 22:17 发表
疑问一:内存参数设置  
在各类JVM下,都提供标准的JAVA运行 -Xms -Xmx参数,当在weblogic中设置-Xms512m -Xmx1024m时,从后台console中观测,weblogic仅仅使用512m初始heap大小,当应用有内存泄漏时或大量用户 ...

你问的问题都很有深度, 也很切中要害. 不过可以告诉你的是, 除了疑问一能解决,二和六不是什么大问题外, 三四五在哪个JAVA虚拟机上都会出现的. 这是由于JAVA虚拟机的工作模式决定的 IBM的WAS也一样. 问题三的解决, 最终要告你自已做流量控制,JVM不做这个;问题四, JVM没这本事, 不要指望了; 问题五, 你从应用角度看是某节点线程或者内存用完,但请求转发者是不知道的,因此不算故障, 除非你明确将这个节点当下来. WAS 的ND版也是同样的问题.
总的来说, 各种各样的JVM,本质上还不算是一个专业的交易中间件,因此流量控制,负载均衡等工作,还是需要你自已完成的, 既然使用JAVA, 就得提早对这些问题做好准备.

狂之美人 2022-08-07 22:23:53

1、-Xmx设置JVM堆的上限内存值,你-Xms512m -Xmx1024m当然一开始只有512m。如果你安装及补丁等正常-Xmx肯定是会生效的。
至于最小和最大值设置成一样这种做法,要视具体厂商的JVM而定,因为每个不同JVM的GC算法和另外一些JVM结构都不同。
2、出现AF非常正常,甚至有时候只need多少字节也有可能。关键要分析AF的频率以及free前后的比例,还有针对AF操作到action多少,以及其他。你可以查对应JVM厂商的文档。
3、关于线程池大小的设定,要关联到你的机器硬件配置、用户的使用并发量等多个因素而定,这个你在performance monitor中可以看到。
另外,如果你已经配了足够大的线程池但还是不够用,就需要考虑应用的连接释放是否合理了。
4、我不知道“内存耗尽”具体指什么;console如果无法响应,可能是weblogic已经处于无法正常工作状态。
5、你在这里出现了cluster和HA两个概念,我不知道你具体做的是什么。但据我们以往的使用情况,正常配置的weblogic cluster是不会将请求发送到处于故障状态的节点的。
6、这个问题解决很简单,BEA有一份supported configuration文档,你可以根据你的实际环境参考这个文档。这是规范的安装方法。规范的安装对于后期应用系统上线后出现的问题的处理是非常有益的。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文