论坛首页 厂商论坛版

IBM WebSphere Application Server 诊断和调优(二)

浏览 29785 次
该帖已经被评为精华帖
作者 正文
时间:2007-07-18
文章非常不错,我们系统碰到了一个几乎和你碰到差不多的问题,试试你的方法,成功后上来告诉你。
   
0 请登录后投票
时间:2007-07-19
推荐使用JPROF及其相关的TPROF, HDUMP, ITRACE等工具,没有图形界面,不会像jprofiler那样占用大量资源,配合WAS产品比较合适。
http://perfinsp.sourceforge.net/jprof.html
   
0 请登录后投票
时间:2007-08-12
下面是我和搂主的消息讨论,感觉还有点用,所以就贴出来了:
我的发言:
window 32bit 确实java heap 最大可以分配到2047M(2G-1),不能超过这个,但通常情况这个大小也设置不了,这个大小os限制的。整个jvm使用的内存不仅仅局限在heap,heap之外还有 JIT,JNI....,所以我当我在websphere5.1的时候分配2047M 的时候 系统自动把我的heap 最大值 限制在1.5G左右。

windows 确实可以扩展2G-1的限制,windows 里有一个 boot.ini 文件,里面可以进行设置。

还有些问题请教,我通过长时间的优化系统的一些性能表现:
gc 平均收集间隔时间是:1.2分钟。
gc的平均收集时间是:511ms
请问这样的性能表现,怎么样,一般的性能参照值是多少?谢谢!
附件是一个 有关windows 内存限制的 ibm 技术文档

楼主的回复:
你附件里面的文档比我以前上传的一篇IBM JVM文档详细多了。而且你上面的分析很客观,Heap只是JVM占内存一个部分,大约是80%,这个很容易验证。

说到性能调优,你看看网上这个blog的系列文章吧:http://songsun.spaces.live.com/,很详细,而且也很客观。
你的GC频率有点偏高,GC收集时间也有点偏大,譬如3-4分钟,每次0.3s左右就差不多了(一般JVM默认就可以是这个值)。不过,说实话,这个都不太重要,把GC收集时间优化大点就可以了。
一般来说,JVM的调优主要是适应硬件和特殊情况,譬如我的服务器有四个cpu,就要调节JVM的concurrent GC特性;我用到了特别的内存Cache,就要专门把Heap弄大点。

应用的性能,主要是程序本身来决定,譬如架构、DB设计、list列表分页,Hibernate二级缓存等,JVM关系不大。真正对JVM的GC敏感的是Java的嵌入式系统,实时系统。MIS系统关系不大。
   
0 请登录后投票
时间:2007-08-16
我这边的生产环境现在也报内存溢出的问题,现在每天都定时重启

可在测试环境又不能重现问题,真是头痛啊

生产环境又不能取消重启的动作,希望各位给点意见
   
0 请登录后投票
时间:2007-08-28
看和做两种感觉,感谢楼主的分享。Java最大的毛病就是规范太多,导致实现不同,虽然大体思路一致,不过实现细节差别很大,具体项目应用比较头疼。不过这好像也是java各种思想百花齐放的原因吧,具体看项目负责人的取舍和对相应实现的理解程度了。
   
0 请登录后投票
时间:2007-09-04
IBM就喜欢把简单问题复杂化,一个 WAS害了多少应用程序,其实看看这些应用程序本身并不复杂,用其他技术如php,rails来实现不会有那么多问题,甚至跑在tomcat上也不会有那么多问题。不要迷信WebSphere
   
0 请登录后投票
时间:2007-09-26
今年看的最好的关于websphere的帖子,楼主继续努力
   
0 请登录后投票
时间:2007-09-28
我们这里也有WebSphere6.0,同样的代码我们布署在bea weblogic8都没问题,可是一放在websphere上
基本天天down 机。也不知怎么办。现场人员又不知出了什么事。只是偶尔发一两个日志。搞不懂。IBM的东东实在不懂的用呀?
[07-9-25 12:29:49:643 CST] 000000c0 SystemErr R java.lang.NullPointerException
[07-9-25 12:29:49:644 CST] 000000c0 SystemErr R at com.ibm.ws.tcp.channel.impl.SocketIOChannel.attemptWriteToSocket(SocketIOChannel.ja
va:830)
[07-9-25 12:29:49:644 CST] 000000c0 SystemErr R at com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java:629)
[07-9-25 12:29:49:644 CST] 000000c0 SystemErr R at com.ibm.ws.tcp.channel.impl.WorkQueueManager.workerRun(WorkQueueManager.java:952)
[07-9-25 12:29:49:644 CST] 000000c0 SystemErr R at com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java:1039)
[07-9-25 12:29:49:644 CST] 000000c0 SystemErr R at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1471)
   
0 请登录后投票
时间:2007-09-29
zwchen,
你好.
我也是刚刚接触websphere,以前觉得它挺麻烦的,读了你的两篇文章和大家的一些回复,感觉对我帮助很大,我按照上边的实践,解决了很多问题.不过现在又遇到了一些问题,就是用jprofiler监控Websphere6.1的时候,通过jprofiler启动Websphere的时候,老出错,提示:
-------------------------------
failed to start
startServer return code = -1
-------------------------------


在Websphere日志native_stderr.log中出现
-------------------------------------------------------
<verbosegc version="20060501_AA">

JVMJ9TI001E Agent library jprofilerti could not be opened (找不到指定的模块。 )
JVMJ9VM015W Initialization error for library j9jvmti23(-3): JVMJ9VM009E J9VMDllMain failed
</verbosegc>
无法创建 Java 虚拟机。
--------------------------------------------------------


在我的server1的配置文件server.xml中,jprofiler添加的内容如下:
---------------------------------------------------------
genericJvmArguments="-agentlib:jprofilerti=port=8849 -Xbootclasspath/a:F:\JPROFI~2\bin\agent.jar"
---------------------------------------------------------

我在baidu和google上搜索关于jprofiler的Websphere资料,可惜却几乎找不到,你能帮-帮-我吗~?将你以前使用jprofiler的情况帮我整理一下.我的邮箱是zhongwu@tom.com , 谢谢了.
   
0 请登录后投票
时间:2008-05-14
研究了一个月.
现在算是能用websphere开发了..
公司都用的wsad..
我觉得不爽,用了myeclipse 的blue版本.
现在感觉也还可以.
总的来说websphere要求太严格了.
很多地方很麻烦..
   
0 请登录后投票
论坛首页 厂商论坛版

跳转论坛:
JavaEye推荐