jfinal经常第一次访问加载很慢

超凡程序猿 发布于 2015/06/05 10:47
阅读 299
收藏 0
jfinal项目运行过程中经常会遇到一个问题:一段时间不访问后台后,再次访问时第一次加载速度很慢,之后又加载的很快,这是什么引起的呢?
加载中
0
糊搞

问题应该有两方面:一方面是Java的回收机制造成的,部分代码在长期不使用时被回收,而再次访问时会再次编译并加载。另一方面是数据库连接,长期不用时,数据库连接被释放,并与数据库断掉物理连接(应该属于数据库行为),再次使用时,物理连接时间较长。

还有操作系统也有类似资源管理机制,可能也会对加载造成影响。但具体是什么地方影响,需要有性能日志供参考分析。

超凡程序猿
超凡程序猿
如果是第一个原因,有没有好的办法解决或者加快这个加载速度呢?
0
JFinal
JFinal

     有一种可能,当长期不访问远程服务后,浏览器对域名 ip 地址的缓存失效,那么用浏览器访问时会先去请求 DNS解析域名得到ip地址,如果你的域名解析正好在某个网段很慢,那么也会造成第一次访问慢的错觉。

     验证上面这种可能的简单方法是,先用 qq 联系你的某个朋友访问一次你的项目,他访问完以后,你再访问如果感觉第一次还是很慢就可以证明,因为实了际上长期不访问后的第一次访问是你朋友进行的。

    还有其它方面的原因,例如缓存过期,长时间不访问后的第一次访问时有密集IO操作,再例如数据库在长期没有访问后会主动断开连接,再次连接数据需要花费较长时间,尤其对于连接池,会同时请求建立多个连接更费时间,数据库连接断开的问题可以通过配置连接池参数让其定期发送请求,相当于心跳。

返回顶部
顶部