扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
2007年9月7日
关键字:
环境
产品:WebSphere Application Server
平台:AIX
版本:5.1,6.0
问题
当发现WAS挂起或响应慢的时候,通过 kill -3 产生 javacore 文件,在 javacore 文件中发现大部分的线程堆栈都在执行java.net.InetAddress.getLocalHost,如下:
at java.net.Inet6AddressImpl.getLocalHostName(Native Method)
at java.net.InetAddress.getLocalHost(InetAddress.java:1186)
at org.apache.soap.util.mime.MimeUtils.getUniqueValue(Unknown Source)
at org.apache.soap.rpc.SOAPContext.setRootPart(Unknown Source)
...............................................
解答
在Java 2 SDK 1.4中,JVM 在获得 HostName 的时候会同时进行 IPv4 和 IPv6 查询。如果Domain Name System (DNS) 服务没有配置接受IPv6查询,JVM可能返回Unknown Host异常,如果Domain Name System (DNS) 服务没有正确配置接受IPv6查询,JVM需要等待IPv6查询返回结果,直到超时。这就引起了JVM挂起或响应慢。
这个问题有以下解决方案:
1.Java解决方案
如果是一般的Java应用程序,可以在启动JVM的时候加入
-Djava.net.preferIPv4Stack=true
参数。
如果是WebSphere Application server,执行如下步骤:
a.登录管理控制台,打开“服务器 > 应用服务器 > 服务名称 > 进程定义 > JVM虚拟机 > 定制属性” 页面。
b.在页面中添加如下定制属性
名称: java.net.preferIPv4Stack
值: true
c.点击“确定”,并保存配置。
d.重新启动应用服务器
2.AIX解决方案
a.安装以下APAR:
AIX V520: IY47908
AIX V510: IY48783
要确认这个补丁是否已经安装,可以用如下命令:
instfix -ik IY#####
b.在确认以上APAR已经安装后,编辑/etc/netsvc.conf文件,在其中加入:
hosts=bind4,local
或者在启动WebSphere Application Server前,设置系统环境变量:
export NSORDER=bind4,local
3.Domain Name System(DNS)解决方案
配置DNS服务器忽略IPv6查询请求
4.Network Information Service (NIS) 解决方案
如果系统使用NIS来解析Hostname,可以通过修改/etc/hosts和/etc/netsvc.conf文件来移除NIS。
具体请参考以下文档:
http://www-1.ibm.com/support/docview.wss?uid=swg21170467
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者