本机构建了一个spring-cloud的开发环境,并使用httpd做请求转发。结果发现在公司网络,通过服务启动httpd非常迅速,一回到家里,启动httpd就启动失败。可是家里的网络是移动的200m网,公司是移动的专线,网络环境并无打的差异。
于是执行如下命令查看错误原因:
systemctl status httpd.service
发现是因为启动时超过了60s,所以超时启动失败。
为什么启动会超时呢?
我突然想到一个类似的现象:
在家里网络通过spring-boot启动服务时,在spring-boot自加载环节就会有一个大约2m的时间,什么日志都没有输出,好像spring-boot在链接什么服务器,结果没有响应,在等待一样。而在公司网络则非常快,在对应的环境,几乎1ms都不需要。之前因为忙,没有顾上去找原因。
这两个现象会不会是相同的原因呢?
我想起来,因为httpd服务也要,基于spring-boot发布的微服务也好,都是通过localhost访问的,没有通过ip访问。会不会是主机映射上出的问题呢?于是检查 /etc/hosts 和 /etc/hostname 。发现我当初配置了主机名,但在 hosts 中没有对主机名进行 ip 的映射。
于是加上类似如下的映射:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 my.host.name
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 my.host.name
重点在每行最后的 my.host.name。 这里需要使用本机实际配置的主机名来替换。
配置好以后,重新启动httpd服务,发现非常快就启动成功了。再重新启动spring-boot微服务,也没有停顿了,和公司网络一样快。
网友评论