问题现像:
新开一个浏览器,打开网站(本机部署),第一次请求的时候响应很慢, 但是第二次响应就很快,但是停止操作几分钟后,再请求又变慢。
或者第一次请求响应后,关闭浏览器再重新打开,请求响应也会很慢! (
注:项目访问地址是在本机配的一个域名
www.hooblogs.com
)
猜测及验证:
1. tomcat的问题,重新安装了一个tomcat, 情况依然存在。
2. 第一次请求后,在代码中debug了一个断点,发现隔几秒钟才能到达断点处。
3. 因为项目部署采用apache+tomcat的结构,其中有用到apache的反向代理,所以猜测是否有可能是apache的原因导制,
停掉apache, 直接访问tomcat, 但是现像依然存在。
4. tomcat的内存不够,于是调大tomcat的内存资源(512M---1G), 现像依然存在。
5. 项目在本机进行部署时,配了域名(修改hosts, 添加了
www.hooblogs.com
) 猜测是域名解析过慢导制的。
于是用:
http://localhost
或者
http://127.0.0.1
直接访问,发现响很快,之前的现像没有了。
分析原因:
因为公司用的是内部局域网,不能直接访问外网,我们在网络连接那里配置了默认的DNS(域名解析系统)。
> 当新打开一个浏览器并发出一个请求时,因为使用了域名访问,浏览器会优化的去请求局域网的DNS解析这个域名
> 到了DNS之后,DNS在解析的时候,发现解析不了,等解析超时后,又告之浏览器,它搞不定。
> 然后浏览器这才通过本机的DNS去解析,发现解析成功,然后才指向本机的tomcat. (所以第一次请求会非常慢)
> 第二次请求的时候,因为浏览器的记忆性, 所以第二次就直接通过本机的DNS解析,所以响应就很快!
> 但是浏览器的记忆力不是很好,容易健忘, 过了几分钟它就忘了, 所以停止操作几分钟后,第一次的响应又非常慢!
为了验证上面的推断,我拨掉本机的网线,请求本机项目地址(
http://www.hooblogs.com
) 发现响应速度很快。
解决办法:
修改网络连接的首先DNS, 改为 127.0.0.1, 备用DNS改为局域网的DNS.
修改前:
修改后:
这样既不影响对局域网的使用,又不影响你在本机的开发测试。