标签: dbcp

HikariPool-1 - 连接不可用,对于非常小的负载服务器,请求在 30000 毫秒后超时

我有一个用于测试目的的小型 Java 应用程序。我最近搬到了hikari。我注意到的是我不断收到此错误。

java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30000ms.
java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30000ms.
at com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:602)
at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:195)
at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:145)
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:85)
Run Code Online (Sandbox Code Playgroud)

以下是我最初对 hikari 的设置。

 HikariConfig config = new HikariConfig();
            config.setJdbcUrl("jdbc:mysql://localhost:3306/****"); 
            config.setUsername("***"); 
            config.setPassword("*****");      
            config.setMaximumPoolSize(20);  
Run Code Online (Sandbox Code Playgroud)

我的两个设备几乎没有使用它,我确保最后我确实关闭了它。所以我不知道为什么它不断收到错误?可能是什么问题,或者我需要更改一些设置吗?

我的 hikari 版本是 HikariCP-2.6.1.jar。

java spring datasource hikaricp dbcp

16
推荐指数
5
解决办法
4万
查看次数

并发日志记录到 sql DB - 线程不并行运行

我用 2.14.0 和 2.13.3 对此进行了测试,我将 JDBC Appender 与 DynamicThresholdFilter 结合使用,并尝试了普通的 Logger 和 AsyncLogger。

在 JDBC Appender 中,我还尝试了 PoolingDriver 和 ConnectionFactory 方法。

事实证明,由于 Log4j2,线程没有并行启动。

使用 AsyncLogger 甚至使情况变得更糟,因为输出表示 Appender 未启动,并且在 15.000 条预期日志中,数据库中只有 13.517 条。

为了重现这个问题,我做了一个 github repo 在这里看到:https : //github.com/stefanwendelmann/Log4j_JDBC_Test

线程

编辑

我用 h2db 替换了 mssql-jdbc,并且线程不会阻塞。JMC 自动分析说有JdbcDatabaseManager 的锁定实例。

我的 mssql-jdbc 的 PoolableConnectionFactory 中是否存在任何配置问题,或者 dbcp/jdbc 驱动程序池是否存在一般问题?

编辑 2

在 Apaches LOGJ2 Jira 上创建票证:https ://issues.apache.org/jira/browse/LOG4J2-3022

编辑 3

为 mssql 和 h2:file 添加了更长的飞行记录

https://github.com/stefanwendelmann/Log4j_JDBC_Test/blob/main/recording_local_docker_mssql_asynclogger_10000_runs.jfr

https://github.com/stefanwendelmann/Log4j_JDBC_Test/blob/main/recording_local_h2_file_asynclogger_10000_runs.jfr

java sql-server logging log4j2 dbcp

5
推荐指数
1
解决办法
245
查看次数

DBCP 连接池

请问下面的代码是否可以正确使用连接池(DBCP)?

我提供 BasicDataSource 的实用程序类如下(几乎与 apache 示例相同)

public class DatabaseUtility {

    private static BasicDataSource dataSource;

    public static BasicDataSource getDataSource(Properties prop) {

        if (dataSource == null)
        {
            BasicDataSource ds = new BasicDataSource();
            ds.setUrl("jdbc:oracle:thin:@"+ prop.getProperty("db") + ":" + prop.getProperty("dbPort") + "/" + 
                    prop.getProperty("dbService"));
            ds.setUsername(prop.getProperty("dbUser"));
            ds.setPassword(prop.getProperty("dbPassword"));


            ds.setMinIdle(5);
            ds.setMaxIdle(10);
            ds.setMaxOpenPreparedStatements(100);

            dataSource = ds;
        }
        return dataSource;
    }
Run Code Online (Sandbox Code Playgroud)

然后我将上述内容用作:

public class MyClass {

    public static boolean isNew(Properties prop, String label) {

        Connection connection = null;
        PreparedStatement ps = null;

        try {
            BasicDataSource dataSource = DatabaseUtility.getDataSource(prop);
            connection …
Run Code Online (Sandbox Code Playgroud)

java connection-pooling jdbc dbcp

1
推荐指数
1
解决办法
684
查看次数