标签: connection-pooling

有没有办法释放饱和的连接池?

我在glassfish服务器上使用open esb.我们有一个与as400数据库一起使用的连接池.

每隔几天我们就会收到此错误:分配连接时出错.原因:正在使用的连接等于max-pool-size和expired max-wait-time.无法分配更多连接

缓解cp的最佳方法是重启服务器.我们还设法设置了另一个具有相同属性的cp.

我的问题是:有没有办法主动"告诉"cp释放所有打开的连接?

干杯,伊兰

java database connection-pooling open-esb ibm-midrange

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

如何增加Twisted的连接池大小?

我使用Twisted 8.1.0作为套接字服务器引擎.反应堆 - epoll.数据库服务器是MySQL 5.0.67.操作系统 - Ubuntu Linux 8.10 32位

/etc/mysql/my.cnf:

max_connections        = 1000
Run Code Online (Sandbox Code Playgroud)

在源代码中:

adbapi.ConnectionPool("MySQLdb", ..., use_unicode=True, charset='utf8', 
                      cp_min=3, cp_max=700, cp_noisy=False)
Run Code Online (Sandbox Code Playgroud)

但实际上,SHOW PROCESSLIST当应用程序在高负载下运行时,我只能看到200(或更少)打开的连接().这还不够我的应用程序:(

我认为这是线程池的限制.有任何想法吗?

python connection-pooling twisted

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

连接管理员应该真的关机吗?

有时我会收到

java.net.SocketException: Too many open files 
java.net.Socket.createImpl(Socket.java:397) 
java.net.Socket.connect(Socket.java:527) 
org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:123) 
org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:123) 
org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:147) 
org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:108) 
org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:415) 
org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:641) 
org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:597) 
Run Code Online (Sandbox Code Playgroud)

我看到了类似的问题java.net.SocketException:太多打开的文件,我也使用apache的httpclient,但似乎答案对我来说不是很有帮助...

有两个答案:

1)做 httpClient.getConnectionManager().shutdown();

2)打电话entity.getContent().close()而不是entity.consumeContent()

但似乎没有一个适合......

1)问题是我正在使用ThreadSafeConnectionManager.它创建一次(在应用程序启动时).因此我们不会关闭(以便连接可重复使用).如果我关闭此管理器 - 所有连接都将关闭.如果我使用它是合适的SingleClientConnectionManager,但我不这样做.我对吗?

2)我发现我也没有关闭流.但是当我开始调试时 - 看来这个getContent()流已经关闭,甚至在调用之前consumeContent().虽然(甚至之后consumeContent)socketInputStream内部的那些getContent()流没有关闭,以及socket.这不好吗?它可能是问题的原因吗?我没有找到如何关闭这个插座的方法!它位于外部输入流的内部,所以我无法得到它.但我在调试模式中看到,此套接字未关闭,以及SocketInputStream.

我们应该如何正常使用ThreadSafeConnectionManager- 它应该只创建一次吗?如果是这样,如何正确关闭这些插座?

java sockets connection-pooling apache-httpclient-4.x

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

如何在C/C++中进行TCP连接池

我正在设计一个带有C++的分布式服务器/客户端系统,其中许多客户端通过TCP向服务器发送请求,服务器抛出一个线程来处理请求并发回它的响应.在我的用例中,只有有限数量的客户端将访问服务器,我需要非常高的性能.从客户端和服务器发送的数据都很小,但非常频繁.因此,在使用后创建连接并将其拆除是很昂贵的.所以我想使用连接缓存来解决这个问题:一旦创建连接,它将被存储在缓存中供将来使用.(假设客户端的数量不会超出缓存的大小).

我的问题是:

  1. 我看到有人说连接池是一种客户端技术.如果此连接池仅用于客户端,则第一次连接到服务器并发送数据.此连接操作会触发服务器端的accept()函数,该函数返回用于从客户端接收的套接字套接字.因此,当客户端想要使用现有连接(在缓存中)时,它不会建立新连接,而只是发送数据.问题是,如果没有建立连接,谁会在服务器端触发accept()并抛出一个线程?
  2. 如果还需要在服务器端实现连接池,我怎么知道请求的来源?由于只能从accept()获取客户端地址,但同时accept()已经为该请求创建了一个新套接字,因此没有必要使用缓存连接.

任何答案和建议将不胜感激.或者任何人都可以给我一个连接池或连接缓存的例子?

c c++ connection tcp connection-pooling

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

记住.net中的SQL连接状态?

除了旧的已知事实,即connection.Close()vs connection.Dispose()是相同的 - 除了在关闭的连接上运行时,Close()在已处理的连接上运行引发异常Close()- 是的 - 我还有一个问题:

假设连接池已打开,(默认) - 为什么记住连接状态很重要?

我在这里读到了这个问题,它表明 - 避免打开和关闭连接可以节省性能.

这似乎是逻辑,但问题是连接永远不会被关闭!它只标记为关闭.

即使我在using范围内使用它- dispose只是关闭连接并将其放回池中.

即使我想要,我也不能让它开放(因为我希望其他人使用它).所以我不得不关闭/处理它.

看看Dapper 也实现了这种行为:

public static async Task<IEnumerable<T>> QueryAsync<T>(this...)
        {
         //...
            bool wasClosed = cnn.State == ConnectionState.Closed;
            using (var cmd = (DbCommand)command.SetupCommand(cnn, info.ParamReader))
            {
                try
                {
                    if (wasClosed) await ((DbConnection)cnn).OpenAsync()...
                  //...
                }
                finally
                {
                    if (wasClosed) cnn.Close();
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,"记忆"在这里实现.

NB,我已经问马克有关相关主题是-为什么短小精悍的样品中,他同时使用 …

.net c# connection-pooling sqlconnection dapper

3
推荐指数
2
解决办法
850
查看次数

使用HSQLDB和Spring嵌入式数据库启用连接池

最近,我一直在尝试为我们在生产中使用Oracle DB的应用程序之一实现基于HSQLDB的内存数据库.该应用程序使用spring框架.但是,我必须以编程方式实现数据源bean,因为我们使用现有的SQL DDL语句(Oracle查询),因此必须以编程方式删除命名空间之类的构造才能在HSQLDB上运行.

我使用EmbeddedDatabaseBuilder(ResourceLoader)初始化数据库.

现在我的问题是我现在想要使用say c3p0添加连接池.通常我会用

<bean id="c3p0DataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
    <property name="driverClass" value="HSQLDB driver path" /> (this is just for representation)
    <property name="jdbcUrl" value="${xxx.jdbcUrl}" />
    <property name="user" value="${xxx.username}" />
    <property name="password" value="${xxx.password}" />
    <property name="minPoolSize" value="1" />
    <property name="maxPoolSize" value="3" />
    <property name="maxIdleTime" value="20" />
</bean>
Run Code Online (Sandbox Code Playgroud)

但是,我很困惑如何在使用Spring嵌入式数据库时定义它.

免责声明:我真的很喜欢春天.

sql spring connection-pooling hsqldb c3p0

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

java.sql.SQLException:在连接缓存中找到无效或过时的连接

我正在使用带有hibernate 4的spring framework 3.2,在本地服务器(apache-tomcat v7.0)上长时间空闲时间后发送请求并且数据库位于远程服务器上时,我得到上述异常.经过几个小时的搜索,我发现问题来自连接池.我尝试了多个连接池,但没有找到令人满意的解决方案.bellow是我的spring-data文件中的当前数据源

<bean id="dataSource" class="oracle.jdbc.pool.OracleDataSource"
destroy-method="close">
<property name="connectionCachingEnabled" value="true" />
<property name="URL" value="${app.jdbc.url}" />
<property name="user" value="${app.jdbc.username}" />
<property name="password" value="${app.jdbc.password}" />
<property name="connectionCacheProperties">
<value>
MinLimit:70
MaxLimit:200
InitialLimit:20
ConnectionWaitTimeout:120
InactivityTimeout:180
ValidateConnection:true
</value>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)

请指教.

java hibernate connection-pooling

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

Redis Cluster在多个线程中

我目前正在使用具有3个主实例的Redis群集模式,我在侦听服务器中使用Jedis(Java客户端),我收到的每个数据创建一个新线程然后线程在redis中进行更新.

我的问题是如何在池配置的多线程中使用Redis Cluster实例.

multithreading connection-pooling thread-safety redis jedis

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

Spring Boot连接池配置的最佳实践

我正在为Spring Boot应用程序和Postgres DB配置JDBC连接池,以使用HikariCP连接池,并试图找到配置设置的最佳实践,不幸的是,网络上没有关于此主题的太多信息。

我正在为不同的设置准备自己的性能测试,但是希望对您有所帮助。应用程序节点的平均吞吐量约为20 req / sec

我对这些属性的最佳值最感兴趣:

    minimumIdle: ?
    maximumPoolSize: ?
    idleTimeout: ?
    maxLifetime: ?
    connectionTimeout: ?
Run Code Online (Sandbox Code Playgroud)

知道最适合的值特别好maximumPoolSize 。连接池设置还有许多其他可用的选项,不胜感激关于它们对应用程序性能的影响的任何建议。

java spring connection-pooling spring-boot hikaricp

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

ADO.net:为什么连接池没有使用已经打开的连接?

此代码的预期行为是一个连接被打开.然后连接返回到连接池并在第二个open()上重用.对?

但是,当我对SQL Server 2005执行此代码时,第二个open()将事务转换为分布式事务.我从这一刻开始看到服务器上的2个连接.而第二个打开()大约需要3-4秒.从这一点开始,只使用了第二个.第一个连接似乎以某种方式被诅咒.

使用SQL Server 2008 R2时,只使用一个连接,如预期的那样.

有任何想法吗?谢谢!

using (var scope = new System.Transactions.TransactionScope())
{

    var constring = @"Server=xxx;Integrated Security=true;Connect Timeout=10;";

    using (var con = new SqlConnection(constring))
    {
        con.Open();
    }

    using (var con = new SqlConnection(constring))
    {
        con.Open();
    }

    scope.Complete();
}
Run Code Online (Sandbox Code Playgroud)

c# sql-server ado.net transactions connection-pooling

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