前段时间,使用Idea+jetty启动dubbo项目时,发现启动非常非常慢,原来只需要十几秒,现在需要5-15分钟,本来以为是服务太多或者是zookeper所在服务器网络问题导致注册慢,没有在意,忍了一个月后实在忍无可忍,开始查找原因。
首先检查了日志打印,发现在注册服务时,每个服务注册都非常缓慢,大约3-5秒一个。
然后down了dubbo代码发现com.alibaba.dubbo.config.ServiceConfig类的如下代码,每次都要执行3-5秒之久:
if (NetUtils.isInvalidLocalHost(host)) {
anyhost = true;
try {
host = InetAddress.getLocalHost().getHostAddress();
} catch (UnknownHostException e) {
logger.warn(e.getMessage(), e);
}
然后开始检查本地hostname,终端输入,hostname,发现hostname为localhost,跟hosts文件内不一致,想起来了,上次升级系统之后就变得很慢,可能是升级系统搞得鬼,查了查mac官网和论坛发现,每次升级系统可能会改变host名称,这就有点坑人了。。。
以下是修改方法:
方法一:
1. 终端输入:sudo vi /etc/hosts,输入密码
2. 可以看到本地hostname并不是localhost,输入i进入编辑。
3. 增加两行:
127.0.0.1 localhost
::1 localhost
4. 修改完成后按esc退出编辑然后输入:wq!保存
方法二:
打开终端,执行: scutil --set HostName “这里是hostname”,不需要重启。
总结:
mac系统每次更新,可能导致hostname更改,这个时候可以使用方法二直接修改为hosts文件中对应的hostname,也可以用方法一修改hosts,将当前hostname增加两行入hosts文件中。