【问题标题】:"(User has exceeded the 'max_user_connections' resource (current value: 10))" error on heroku“(用户已超过'max_user_connections'资源(当前值:10))”heroku上的错误
【发布时间】:2013-12-22 20:59:38
【问题描述】:

此问题与Resque Mysql2::Error: User has exceeded the 'max_user_connections' resource (current value: 10)有关

我在尝试将表插入 MySql 数据库时收到错误消息“(用户已超出 'max_user_connections' 资源(当前值:10))”。

我正在使用此代码连接到数据库:

@Configuration
public class MainConfig {

    @Bean
    public BasicDataSource dataSource() throws URISyntaxException {
        URI dbUri = new URI(System.getenv("DATABASE_URL"));

        String username = dbUri.getUserInfo().split(":")[0];
        String password = dbUri.getUserInfo().split(":")[1];
        String dbUrl = "jdbc:postgresql://" + dbUri.getHost() + ':' + dbUri.getPort() + dbUri.getPath();

        BasicDataSource basicDataSource = new BasicDataSource();
        basicDataSource.setUrl(dbUrl);
        basicDataSource.setUsername(username);
        basicDataSource.setPassword(password);

        return basicDataSource;
    }
}

基于:

https://devcenter.heroku.com/articles/connecting-to-relational-databases-on-heroku-with-java#using-the-database_url-in-plain-jdbc

要解决此问题,我可以重复使用此连接吗?

我已尝试更新上面的代码以重新使用相同的 BasicDataSource,但我收到错误。

当我检查客户端连接时,我看到的是:

客户端连接的数量随着时间的推移而减少,似乎在指定的时间跨度内可以建立的最大连接数?

【问题讨论】:

  • 你试过关闭连接吗?
  • @Dodd10x 是的,我每次都尝试关闭连接但同样的错误
  • 如果你没有使用连接池,那么它可能只是连接没有被正确释放。您可能希望包含显示您如何创建和释放每个连接的代码。

标签: java mysql spring heroku


【解决方案1】:

我可能错了,但我相信是数据库自己告诉您您已达到限制。您可以在数据库选项中更改它。

对于我正在工作的一个项目,我们使用了一个连接池并且限制为 110 个连接。不过,这是基于一小部分用户。

【讨论】:

  • 是的,如果是mysql抱怨连接太多,那么可能是你的池大小对于mysql配置来说太大了。一些 DB 连接池管理器将继续提供新连接,即使它们有空闲连接,直到它们达到 maxIdle 参数。 Oracle UCP 将使用循环选择下一个连接,并且仅在连接空闲时间超过特定超时时才减小池大小......这会导致 1 个线程不断使用和返回连接可能导致池增长到其最大空闲大小。
猜你喜欢
  • 1970-01-01
  • 2013-07-30
  • 1970-01-01
  • 2021-05-31
  • 2017-05-21
  • 2017-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多