- [x] I have searched the [issues](https://github.com/apache/dubbo/issues) of this repository and believe that this is not a duplicate.
- [x] I have checked the [FAQ](https://github.com/apache/dubbo/blob/master/FAQ.md) of this repository and believe that this is not a duplicate.

### Environment

* Dubbo version: 2.6.2
* Operating System version: Linux
* Java version: 1.8

### Steps to reproduce this issue

1. Restart dubbo service.
2. Ping hostname becomes slow.


### Expected Result

Start dubbo service quickly.

### Actual Result

![image](https://user-images.githubusercontent.com/15684156/61106851-f4d04500-a4b0-11e9-898a-4c55a78f7654.png)

Dubbo service startup is slow, it takes two hours.

Thread dump like this:

![image](https://user-images.githubusercontent.com/15684156/61106974-4678cf80-a4b1-11e9-9c03-67a9f39f5d99.png)

[More details](https://crossoverjie.top/2019/07/05/troubleshoot/dubbo-start-slow/)
.filter(CollectionUtils::isNotEmpty)
                                .orElseGet(() -> {
                                    ProtocolConfig protocolConfig = new ProtocolConfig();
                                    protocolConfig.refresh();
                                    return new ArrayList<>(Arrays.asList(protocolConfig));
                                })
                );
            }
        } else {
            String[] arr = COMMA_SPLIT_PATTERN.split(protocolIds);
            List<ProtocolConfig> tmpProtocols = CollectionUtils.isNotEmpty(protocols) ? protocols : new ArrayList<>();
            Arrays.stream(arr).forEach(id -> {
                if (tmpProtocols.stream().noneMatch(prot -> prot.getId().equals(id))) {
                    tmpProtocols.add(ConfigManager.getInstance().getProtocol(id).orElseGet(() -> {
                        ProtocolConfig protocolConfig = new ProtocolConfig();
                        protocolConfig.setId(id);
                        protocolConfig.refresh();
                        return protocolConfig;
                    }));
                }
            });
            if (tmpProtocols.size() > arr.length) {
                throw new IllegalStateException("Too much protocols found, the protocols comply to this service are :" + protocolIds + " but got " + protocols
                        .size() + " registries!");
            }
            setProtocols(tmpProtocols);
        }
    }
    public Class<?> getInterfaceClass() {
        if (interfaceClass != null) {