Heroku java 应用程序不会在线超过 90 秒

Posted

技术标签:

【中文标题】Heroku java 应用程序不会在线超过 90 秒【英文标题】:Heroku java app won't stay online for more than 90 seconds 【发布时间】:2021-12-08 13:38:54 【问题描述】:

我一直在尝试让我的 discord bot (jda/gradle) 在 heroku 上上线一段时间,唯一对我有用的是使用 .jar 文件让我的 bot 上线,但不幸的是它成功了90 秒后离线,heroku 日志给出:

 Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 90 seconds of launch

这是我的 build.gradle

    plugins 
    id 'java'
    id 'application'
    id 'com.github.johnrengelman.shadow' version '7.0.0'


mainClassName = 'com.xlol.testbot.TestBot'

group 'com.xlol'
version '1.0'

sourceCompatibility = 16

repositories 
    mavenCentral()
    jcenter()
    maven 
        name 'm2-dv8tion'
        url 'https://m2.dv8tion.net/releases'
    


task stage(dependsOn: ['build', 'clean'])
build.mustRunAfter clean

dependencies 
    implementation group: 'me.duncte123', name: 'botCommons', version: '1.0.45'

    implementation group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1'
    implementation 'net.dv8tion:JDA:4.3.0_324'
    implementation 'io.github.cdimascio:java-dotenv:5.1.1'
    implementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.3'


compileJava.options.encoding = 'UTF-8'

我的Procfile

web: java $JAVA_OPTS -jar build/libs/HerokuTestBot-1.0-all.jar -Dserver.port=$PORT $JAR_OPTS

我的system.properties

java.runtime.version=16
server.port=$PORT:8080

如果您需要其他任何东西,请提出要求,我已经尝试解决此问题大约 3 天了,任何帮助将不胜感激,在此先感谢!

【问题讨论】:

我在这里看不到任何关于您的实际代码的信息。你的机器人会监听 HTTP 请求吗? @Chris 我不知道如何检查,这可能意味着它没有,你能告诉我如何让它监听 HTTP 请求吗? 应该是吗?我不知道它应该做什么。如果它需要响应 HTTP 请求,它必须在 Heroku 分配的端口上监听它们并作为web 进程运行。如果它响应 HTTP 请求,它应该是一个非web 进程,例如可能是worker @Chris 我已经修复了它,这实际上是解决方案,我想运行一个我需要使用web.jar 文件,但它与worker 一起工作得很好,谢谢 【参考方案1】:

对于想要答案的人(致 @Chris),这是因为 Heroku 无法在端口“$PORT”(Heroku 的变量)上找到 Web 应用程序。此托管需要 Web 端口或应用程序才能通过网站链接访问它。

但是,在所有情况下。人们会推荐您使用 VPS 或支持 Java 托管的主机。 (例如:托管我的世界服务器的主机,因为 Minecraft 在 Java 上运行。|| 支持多种语言的 Discord Bot 托管的主机,从 NodeJS 到 Java)

【讨论】:

以上是关于Heroku java 应用程序不会在线超过 90 秒的主要内容,如果未能解决你的问题,请参考以下文章

Web 进程在启动后 90 秒内未能绑定到 $PORT

在heroku上部署了discord bot,bot不会上线

Heroku 当我在线部署我的应用程序时它崩溃但在我的本地机器上它可以正常工作

从托管在 Heroku 的在线 PHP 站点连接数据库

Heroku Dyno 免费时间

Node/React 应用程序不会部署到 Heroku