spring boot 做的网站访问隔几秒会慢一次,想不出来是什么问题

2017-02-19 11:06:51 +08:00
 srx1982

软件版本: os: centOS 6.5 (阿里云) spring boot: 1.4.1 (自带的 tomcat 8.5.5 )

部署方式: java -jar xxx.war (直接运行 war 包方式) 端口 8081

cache 相关配置: spring.resources.cache-period = 1 spring.resources.chain.enabled = true

状况描述: 1.访问 www.abc.com:8081/a.html , a.html 返回 304 ,但会花费 1.5s , a.html 中的各种 css 和 js 也都返回 304 ,每个 15ms 左右。 2.在 20 秒(有可能是 15 秒,大概是 10 到 20 秒之间)内刷新此页,无论是 a.html 还是其中的资源,仍然返回 304 ,但 a.html 明显提升速度,仅花费 15ms 左右和其他资源一样,这 20 秒内反复刷新都很快,所有资源花费 15ms 左右。但是一旦超过 20s 后再访问, a.html 又会花费 1.5s 。 3.同样一台服务器,一个非 spring boot 的网站也在同时运行,用的是 tomcat 8 ,端口 8080 。这个网站就没有此问题。 4.访问接口或者 jsp 也同样,虽然每次都返回 200 ,但是也会出现和 1 、 2 描述的相同情况。 5.访问不存在的资源也会出现这种情况(返回 404 )。

思考: 1.由于访问所有资源(静态、接口)都会出现这种情况,所以应该不是静态资源缓存的问题,接口什么的没加过缓存。 2.由于同一台机器的其他服务都没问题,所以目前推断是 boot 自带的 tomcat 有问题。

想知道这种现象的原因是什么,所以来这里问问各位~,哪里写的不清楚还请大家指明,谢谢~

7737 次点击
所在节点    问与答
13 条回复
ljcarsenal
2017-02-19 11:37:33 +08:00
静态资源文件交给 nginx 啊,另外这些不变的东西应该设置成强缓存 反回 200 from cache 。
不懂 java 接口也有问题的话应该就是 tomcat 的原因 不过上边说的是从前端方面应该进行的优化
srx1982
2017-02-19 11:43:19 +08:00
@ljcarsenal 谢谢回复,如果这个问题解决不了那上线的时候只能用 nginx 了,实际上我还是比较关心为什么会发生这种事情。
ljcarsenal
2017-02-19 11:48:14 +08:00
@srx1982 我不知道自带的那个服务器是不是只是为了开发用的。其他脚本语言的开发框架都会自带一个开发的服务器 这玩意性能很弱 只是开发的时候使用的
srx1982
2017-02-19 11:55:57 +08:00
@ljcarsenal 是个嵌入式的最简版,也有可能是这个原因
bdbai
2017-02-19 13:08:06 +08:00
@ljcarsenal 200 from cache 不是返回的。还有 Swoole 、 Tornado 以及 Node.js 搭的服务都是必须自己运行的。
ljcarsenal
2017-02-19 14:42:06 +08:00
@bdbai 嗯 我意思就是不向服务器请求 直接使用缓存
cathzhang
2017-02-19 15:32:00 +08:00
性能问题连代码都不贴怎么看?代码里有基础的 log 输出吗?
做一下 jvm 线程监控。
查看一下页面缓存相关的配置。
查看一下数据库连接池配置。
srx1982
2017-02-19 16:16:36 +08:00
@cathzhang 我感觉不是代码导致的性能问题,所以就没贴。无论是静态资源还是接口,甚至是访问不存在的资源路径都会出现这个问题。所以我觉得可以排除页面缓存和数据库连接池的问题。我回头会做一下 jvm 监控试试,谢了~
selrain
2017-02-19 22:27:04 +08:00
关注
bwhujie
2017-04-19 08:33:04 +08:00
请问楼主是怎么解决内嵌 tomcat 运行缓慢的?
srx1982
2017-04-19 11:41:49 +08:00
@bwhujie 不用内嵌版本了,后来就部署到正常的 tomcat 上了
bwhujie
2017-04-19 15:28:07 +08:00
我们这里页面也遇到了这种问题, 页面访问时快时慢, 最慢的居然 10s, 很莫名其妙的。
jack80342
2017-10-31 21:48:58 +08:00
这几天翻译了 Spring Boot 最新的官方文档,欢迎👏fork,https://www.gitbook.com/book/jack80342/spring-boot/details

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/341512

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX