Linux 上Java服务启动很慢,10+分钟

现象

在一台新centos服务器上启动java服务很慢,每次需要花费10多分钟。

分析

生成javacore(jstack 进程id > 1.log):

"main" #1 prio=5 os_prio=0 tid=0x00007f7f90008800 nid=0xa8eb runnable [0x00007f7f986fb000]
   java.lang.Thread.State: RUNNABLE
        at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method)
        at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:928)
        at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1323)
        at java.net.InetAddress.getLocalHost(InetAddress.java:1500)
        - locked <0x00000000d116d750> (a java.lang.Object)
        at sun.management.VMManagementImpl.getVmId(VMManagementImpl.java:140)
        at sun.management.RuntimeImpl.getName(RuntimeImpl.java:59)
        at org.springframework.boot.system.ApplicationPid.getPid(ApplicationPid.java:55)
        at org.springframework.boot.system.ApplicationPid.<init>(ApplicationPid.java:46)
        at org.springframework.boot.logging.LoggingSystemProperties.apply(LoggingSystemProperties.java:106)
        at org.springframework.boot.logging.LoggingSystemProperties.apply(LoggingSystemProperties.java:99)
        ……

发现main线程停在查询主机对应的ip地址上。再看/etc/hosts中发现没有主机名对应的ip映射关系。

解决办法

在/etc/hosts中增加主机名对应的ip映射关系。

Logo

更多推荐