将 JAVA 战争部署到动态网站性能问题

Posted

技术标签:

【中文标题】将 JAVA 战争部署到动态网站性能问题【英文标题】:Deploying JAVA war to dynamic website performance issue 【发布时间】:2018-06-25 05:26:28 【问题描述】:

我在一个 android 应用程序中构建了一个 java 程序,用于解析来自在线网站的一些数据。应用程序将使用此数据向用户显示内容(有组织)。我试图尽可能地优化我的代码,但我无能为力,因为它有很多数据。所以我所做的是在 HEROKU 上部署 java 程序,让服务器端完成工作,并以一个简单的 html 形式给出结果,我可以轻松地解析它而不会产生重大延迟。问题是这效果很好。我的性能有了很大的提高,但有一个小问题。当我在 2 天内第一次打开该应用程序时,结果会慢很多,但在第二次运行之后,它似乎要快得多。现在我猜测HEROKU服务器以某种类似缓存的方式工作,因为在客户端发出请求之前,最近运行的动态网站没有优先权,考虑到在随后的2,3次运行中我得到了非常高的增长在性能上。现在,我的问题是,有没有一种方法可以让我的 HEROKU Java 程序“优先”,或者是否有另一个免费的动态网站允许您部署战争并且不会出现此类性能问题。对某些人来说,这似乎没什么大不了的。特别是,我将性能从 6 秒提高到 2 秒,这实际上是一个很大的问题,因为应用程序用户通常不会容忍这种延迟。

【问题讨论】:

这更可能是编程不佳而不是 Heroku 的问题。你为什么不把这个问题变成一个实际的问题,而不是一堵不相关的文字墙呢?我们不能仅仅猜测您的应用程序做了什么,然后神奇地给出建议。 @nbokmans 我实际上从 6300 毫秒提高到 300 毫秒,这在我看来是相当显着的性能增加了近 21 倍。如果我尝试在 localhost 上运行它,几乎会发生同样的事情。所以我想我的代码很好。只是在寻找一些替代方案,因为我对在线部署动态网站并没有太多经验。 @nbokmans 我可以看到这里还有其他人有同样的问题 [link] (***.com/questions/2606190/…) 只是在寻找解决方法 【参考方案1】:

Heroku 让免费应用进入休眠状态。休眠后的第一个请求会重启应用,这意味着你需要等待更长的时间。

欲了解更多信息,请参阅Heroku's sleeping policy for Free dynos。

【讨论】:

以上是关于将 JAVA 战争部署到动态网站性能问题的主要内容,如果未能解决你的问题,请参考以下文章

动态水印图像会影响网站性能吗?

将启用 SSL 的 Java SpringBoot 战争部署到外部 Tomcat 服务器

如何在端口 80 上将战争文件部署到 Glassfish?

如何使用詹金斯管道将战争部署到tomcat?

大型网站架构系列:负载均衡详解

大型网站架构系列:负载均衡详解