繁体   English   中英

Tomcat 第一次响应慢

[英]First response is slow Tomcat

我制作了一个由 Tomcat 托管的 Java Web 应用程序。 它可以在这个URL上找到。

我遇到的问题是,每当我第一次访问该页面时,大约需要 10 秒,而每次访问后仅需要 100-500 毫秒。 我会说速度的提高是由于浏览器缓存,但实际上并非如此,当我也刷新缓存时( ctrl + shift + r )我得到了同样的快速响应。

然后过了一段时间,大约 5 分钟,我再次访问该页面,它又变慢了。

您可以通过将搜索参数值更改为例如: 1050105110522670400023002200来尝试对提供的 URL 进行一些测试。

我发现的另一个有趣的事实是,无论有效载荷有多大(将 1050 与 2300 进行比较),时间几乎总是相同的。 9-10 秒。 所以我假设像 Java Server 这样的东西必须准备好,这需要时间。

编辑:

我首先认为它可能与 Java/Tomcat 必须加载一些资源有关,然后在一段时间后再次加载 +-3-5 分钟,因为出于某种原因它卸载了它。 但正如我上面所写,即使我更改了 URL 查询字符串(这会在执行期间导致不同的 SQL 查询),它也会再次加载很长时间。 这个问题可以与数据库有关吗? 我正在使用 MySQL。

编辑2:

它更快的原因很可能是服务器缓存。 我有 95% 的把握,那是因为我做了几个实验,例如在 2 台计算机上尝试它等(不,它不是浏览器缓存)。 然后我意识到,如果它只有在缓存时才快,那么实际的.executeQuery代码行需要这么长时间。 即使通过WorkBench等客户端发出的完全相同的请求仅需 0.285 秒,也需要 10 秒。 因此,我将尝试使用PreparedStatement或进一步实验。

内容大小为 200kB。 您需要在前端和后端对其进行优化。

主要问题出在您的后端。 检查为什么需要这么长时间。

在前端,您可以启用 gzip 压缩。 查看 tomcat 文档了解如何操作。 这将减少下载的大小。

由于浏览器缓存,第二次对您来说可能更快。 检查 Firebug 中的响应代码,如果响应是 304,则它被缓存。 响应 200 表示它已从服务器加载。

如果您忘记在生产环境中关闭初始 modell-schema 同步选项,例如在Spring -> JPA -> Hibernate -> application-[server].yml-> 中,ORM 系统(如Hibernate )可能会导致启动速度非常慢

spring:
    jpa:
        hibernate:
            ddl-auto: update

更新

如果您的模型没有改变,请在生产环境中将“更新”切换为“无”以加快启动速度。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM