gpt4 book ai didi

heroku - 减少 Heroku 上的 Clojure 启动时间(错误 R10)

转载 作者:行者123 更新时间:2023-12-02 02:17:47 26 4
gpt4 key购买 nike

我的 Clojure Compojure 应用程序在 50% 的时间内超出了绑定(bind)到 Heroku 端口的启动时间限制。然后需要调用一两次 heroku restart 才能使其运行。我可能需要太多依赖项,但我不知道是否可以动态执行此操作。

有没有办法通过稍后加载依赖项来在 Clojure 中更快地绑定(bind)? Ruby 领域普遍接受的解决方案是 heroku-forward ,但这不适用于 Clojure。

此问题与 Heroku Boot Timeout (Error R10) 相关.

CircleCI 处理我的部署,并且 uberjar 是预先构建的。

最佳答案

TL;DR:没有简单的方法可以减少 Heroku 上的 Clojure 启动时间。改为部署 uberjar。

我在使用 Clojure + Heroku 时遇到了同样的问题。我认为问题主要不是下载依赖项的时间,因为 Heroku 已缓存它们,因此像 heroku-forward 这样的解决方案将不起作用。Clojure 应用程序需要首先加载完整的 Clojure 运行时,然后运行时将编译应用程序的代码。大量的引导和编译时间会导致超时错误。有两种方法可以解决此问题:

  1. 使用 lein uberjar 在另一台计算机上进行编译并部署该 jar。
  2. 不要使用莱宁根。首先编写一个小Java来声明端口(有点鬼),然后从Java手动引导Clojure,在启动应用程序的主要功能时关闭端口以重新占用端口。然而,这种方式有点奇怪,因为你这么早就声明了端口,Heroku 会急切地将你的(幽灵)应用程序带到世界上,所以停机时间相当长。

关于heroku - 减少 Heroku 上的 Clojure 启动时间(错误 R10),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27122925/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com