当在本地运行 spring boot 应用程序时,我可以看到服务器和客户端之间的时间是:
2018-04-08 19:13:26.030 INFO 20348 --- [nio-9191-exec-4] c.pmdcodereview.algo.MetadataLoginUtil : Total Time Taken 9346
2018-04-08 19:13:26.035 INFO 20348 --- [nio-9191-exec-4] c.p.controller.PMDController : Total Time Taken from PMDController 4
但是一旦我在heroku中托管应用程序,这就会更改为:
2018-04-08T14:09:28.807136+00:00 app[web.1]: 2018-04-08 14:09:28.806 INFO 4 --- [o-38031-exec-10] c.pmdcodereview.algo.MetadataLoginUtil : Total Time Taken 77740
2018-04-08T14:09:28.846032+00:00 app[web.1]: 2018-04-08 14:09:28.845 INFO 4 --- [o-38031-exec-10] c.p.controller.PMDController : Total Time Taken from PMDController 38
这怎么可能,我尝试在 ngrok 中托管我的应用程序,看看将我的应用程序暴露到互联网是否可能与 heroku 类似,但即使 ngrok 也显示:
2018-04-08 19:07:10.931 INFO 20348 --- [nio-9191-exec-6] c.pmdcodereview.algo.MetadataLoginUtil : Total Time Taken 9487
2018-04-08 19:07:10.936 INFO 20348 --- [nio-9191-exec-6] c.p.controller.PMDController : Total Time Taken from PMDController 5
我该如何处理这个问题? 我已经尝试了服务器端的所有可能的优化来快速响应客户端,但在heroku中仍然失败? 我在heroku中使用免费的dyno。
最佳答案
Free Heroku dynos使用共享 CPU,这意味着 Heroku dyno 上的 CPU 密集进程可能会比昂贵的笔记本电脑慢。
另一个常见原因(尽管可能不是在本例中)是 Heroku 会将空闲的 Free dyno 置于 sleep 状态,这意味着它们必须支付下一个请求的启动开销。
关于java - Heroku 时间与本地时间 : too much difference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49718837/