概述
记一次BUG解决
- 记一次BUG解决
-
- 问题描述
- 排查及解决
- 后续
-
问题描述
近期用户反映系统经常页面加载不全,功能按钮失效,需要多次刷新才可用,失败率极高,已经影响了用户的使用,我们在本地使用却没有任何问题。后面跟踪发现,部署在服务器上的应用我们访问时,很多JS和资源文件会加载失败,而且失败概率较高,用户的问题就是因为缺少了JS文件和一些样式文件导致的。
排查及解决
猜测一:是不是网络原因?
因为客户使用的商密网,还是VPN,故网络不稳定的情况时有发生。但是进一步分析,就算网络较差,应该也只是加载较慢,不会直接加载失败。
猜测二:是否资源文件的路径不对?
因为每次加载失败的资源文件不固定,而且多次刷新之后就能成功了。所以这个可能性排除。
猜测三:Tomcat配置问题?
因为在本地访问是没有问题的,而一放到服务器上就会出现这个问题,故怀疑是否tomcat的配置有问题,后面果然在tomcat里面发现了一个奇怪的配置:
去掉这个keepAliveTimeout=0
的配置之后,BUG迎刃而解。
后续
后面查阅资料,keepAliveTimeout
这个字段是设置下次请求过来之前,持久连接保持的时间,如设置为0,则保持时间为0。这个参数如果不设置,则默认取connectionTimeout
这个参数的值。
持久连接(Keep-Alive)也叫做长连接,它是一种 TCP 的连接方式,连接会被浏览器和服务器所缓存,在下次连接同一服务器时,缓存的连接被重新使用。由于 HTTP 的无状态性,人们也一直很清楚“一次性”的 HTTP 通信。持久连接则减少了创建连接的开销,提高了性能。HTTP/1.1 已经支持长连接,大部分浏览器和服务器也提供了长连接的支持。
keepAliveTimeout:
表示在下次请求过来之前,tomcat保持该连接多久。这就是说假如客户端不断有请求过来,且未超过过期时间,则该连接将一直保持。
maxKeepAliveRequests:
表示该连接最大支持的请求数。超过该请求数的连接也将被关闭(此时就会返回一个Connection: close头给客户端)。
最后
以上就是尊敬大雁为你收集整理的BUG解决:部分JS等资源文件直接加载失败记一次BUG解决的全部内容,希望文章能够帮你解决BUG解决:部分JS等资源文件直接加载失败记一次BUG解决所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复