본문 바로가기
IBM - old/WAS 문제&해결

java.net.InetAddress.getLocalHost 메소드를 호출할 경우 오랜시간이 걸리거나 행현상

by freeman98 2016. 5. 6.
1. WAS 버전 : WebSphere ND v6.1

2. OS : AIX v5.3

3. Error 발생 시점 :  java.net.InetAddress.getLocalHost 메소드를 호출할 경우 오랜시간이 걸리거나 행현상이 나타날 경우

4. Error message :
kill -3 으로 Javacore 를 확인했을 경우 Stack 의 top 에 아래같은 method 들이 걸려있는 경우
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)

5. 예상 이유 : IPv6 와 IPv4 사이간의 lookup 하는 방식의 차이가 있는데 IPv6 방식으로 lookup 하다가 해당 방식이 지원되지 않아서 fail 되면서 문제발생

6. 조치 방안 :
Java solution
Java 어플리케이션 시작시에 다음과 같은 시스템 프로퍼티를 설정 : -Djava.net.preferIPv4Stack=true

WebSphere Application Server
관리콘솔 : Servers > Application Servers > server_name > Process Definition > Java Virtual Machine > Custom Properties(/Environment Entries)

다음의 항목으로 custom property 설정
Name: java.net.preferIPv4Stack
Value: true

AIX

For AIX V520: IY47908
For AIX V510: IY48783

"instfix -ik IY#####" 명령을 통하여 위의 APAR 가 설치되어 있는지 확인 

/etc/netsvc.conf 파일에 hosts=bind4,local 추가한 후에 "refresh -s inetd" 와 같이 inetd deamon을 refresh


http://www-01.ibm.com/support/docview.wss?uid=swg21170467


댓글