科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网存储频道如何解决查找 HostName 引起 JVM 挂起,或者响应慢的问题?

如何解决查找 HostName 引起 JVM 挂起,或者响应慢的问题?

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

当发现WAS挂起或响应慢的时候,通过 kill -3 产生 javacore 文件,在 javacore 文件中发现大部分的线程堆栈都在执行java.net.InetAddress.getLocalHost,

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领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章