在本地运行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。
答案 0 :(得分:0)
Free Heroku dynos使用共享CPU,这意味着Heroku dyno上的CPU绑定进程可能比昂贵的笔记本电脑慢。
另一个常见的原因(尽管可能不是这种情况)是Heroku会将闲置的自由动力进入睡眠状态,这意味着他们必须在下次请求时支付启动费用。