1

我正在切换到 Heroku 并尝试使用 ClearDB 提交 Play 2.0 项目。一切似乎都可以正常编译,除了 Heroku 尝试启动应用程序时出现错误:

2012-08-02T18:10:45+00:00 heroku[web.1]: 状态从开始变为开始
2012-08-02T18:10:45+00:00 heroku[slugc]:Slug 编译完成
2012-08-02T18:10:48+00:00 heroku[web.1]:使用 SIGTERM 停止所有进程
2012-08-02T18:10:48+00:00 heroku[web.1]:使用命令`target/start -Dhttp.port=47334 -Ddb.default.url=mysql://bf64fa6afab971:4b5fe3e5@us 启动进程-cdbr-east.cleardb.com/heroku_32ef64c5764c759?reconnect=true -DapplyEvolutions.default=true -Xmx384m -Xss512k -XX:+UseCompressedOops`
2012-08-02T18:10:51+00:00 app[web.1]:播放服务器进程 ID 为 2
2012-08-02T18:10:51+00:00 heroku[web.1]:进程以状态 143 退出
2012-08-02T18:10:52+00:00 app[web.1]:[error] cjbhAbstractConnectionHook - 无法获取连接休眠 1000 毫秒并重试。剩余尝试次数:10。异常:null

我已经完成了所有的谷歌搜索和研究,但不知道是什么导致了错误:

档案

网络:目标/开始 -Dhttp.port=$PORT -Ddb.default.url=$CLEARDB_DATABASE_URL -DapplyEvolutions.default=true $JAVA_OPTS

应用程序.conf

db.default.driver=com.mysql.jdbc.Driver

heroku 会议

CLEARDB_DATABASE_URL:mysql://myusername:mypassword@us-cdbr-east.cleardb.com/heroku_32ef64c5764c759?reconnect=true
DATABASE_URL:postgres://myusername:mypassword@ec2-107-20-235-95.compute-1.amazonaws.com/sbzwmvjnqs
ENVIRONMENT_MODE:阶段
JAVA_OPTS: -Xmx384m -Xss512k -XX:+UseCompressedOops
路径:.sbt_home/bin:/usr/local/bin:/usr/bin:/bin
回购:/app/.sbt_home/.ivy2/cache
SBT_OPTS: -Xmx384m -Xss512k -XX:+UseCompressedOops
SHARED_DATABASE_URL:postgres://myusername:mypassword@ec2-107-20-235-95.compute-1.amazonaws.com/sbzwmvjnqs
4

1 回答 1

3

这是我在 Heroku 上让 Play Framework 2.0.2 与 MySQL(通过 ClearDB)一起工作之前的最后一个配置问题。

尽管它没有给出实际错误,但它只是在说:

2012-08-02T18:10:52+00:00 app[web.1]:[error] cjbhAbstractConnectionHook - 无法获取连接休眠 1000 毫秒并重试。剩余尝试次数:10。异常:null

实际的问题是 Heroku 在“标准免费”模式下,使用 ClearDB 只会给你 10 个同时连接。我之前看到过,默认情况下,play 将使用 60 个连接。

解决方案:

在 application.conf 中,添加:

db.default.partitionCount=1
db.default.maxConnectionsPerPartition=5
db.default.minConnectionsPerPartition=1
db.default.acquireIncrement=1
db.default.acquireRetryAttempts=1
db.default.acquireRetryDelay=5 秒
于 2012-08-02T19:32:55.993 回答