标签: connection-pooling

有没有办法在php页面之间共享对象?

我是php的新手,但在其他Web技术中,您可以在页面实例之间共享对象.例如,在java jsp页面中,您可以轻松拥有作为整个服务器实例的静态类存在的类.如何在PHP中执行此操作?

我没有引用会话变量(至少我不这么认为).这更多是出于资源池的目的(可能是要共享的套接字或数据库连接等).因此,需要在后续加载之间共享整个类,而不仅仅是我可以在会话中存储的一些原始变量.

我也研究过做单例类,但我相信这个类只在同一页面内共享,而不是在页面之间共享.

为了使事情更加清晰,我正在寻找可以帮助我分享连接到服务器的socket的插件,以便加载该页面的所有用户使用相同的套接字并且不打开新的一个.

php connection-pooling

12
推荐指数
2
解决办法
6534
查看次数

在连接池关闭之前,sql server连接必须闲置多长时间?

我有一个客户端 - 服务器应用程序,使用.NET SqlClient数据提供程序连接到SQL服务器 - 非常标准的东西.默认情况下,在连接池管理器关闭数据库连接并将其从池中删除之前,连接必须有多长时间空闲?有什么设置控制这个?

这个MSDN文档只说

连接池在空闲了很长时间后,或者如果池中检测到与服务器的连接已被切断,则会从池中删除连接.

sql-server connection-pooling

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

DBCP:removeAbandoned VS驱逐

我没有弄清楚removeAbandoned驱逐之间的区别.我在某处读过removeAbandoned已被弃用,但在官方文档中没有提到它(http://commons.apache.org/dbcp/configuration.html).

所以,如果有人能够启发我,我将不胜感激:)

谢谢!

java mysql database connection-pooling apache-commons-dbcp

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

有没有一种安全的方法来判断JDBC连接是否仍然正常?

我们有一个Web服务器处理来自客户端的请求.此Web服务器的一个组件包含与数据库的连接.

在开始使用之前,我需要能够识别连接是否已关闭或在某种程度上不再起作用.目前我做的事情如下:

// Decide connection details on alias.
private String alias = null;
// I must have my own because I prepare statements.
private Connection connection = null;

public Connection getConnection() {
  try {
    if ( connection.isClosed() ) {
      // Start afresh.
      connection = null;
    }
    // ** More tests here to check connection is ok.
    if (connection == null) {
      // Make a new connection.
      connection = Connections.getConnection(alias);
    }
  } catch (SQLException ex) {
    // Cause a NPE further …
Run Code Online (Sandbox Code Playgroud)

java connection connection-pooling jdbc

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

"Tomcat 7 JDBC连接池"是否适合生产?它与BoneCP相比如何?

我们的网站每天大约获得1M PV,我们肯定会使用Tomcat.

我找不到有关jdbc-pool的更多信息,不确定它是否足够稳定以供生产.有人有经验吗?以及任何配置/调整内容供参考?

正如有人提到的,BoneCP可能是另一种选择.但似乎它已经停止了(太可悲了......).这会是一个更好的选择吗?

顺便说一句,HikariCP太年轻了,我会留意它,因为它是迄今为止我发现的最新/最快的CP.

谢谢你的建议.

java connection-pooling bonecp jdbc-pool hikaricp

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

分析Spring/JPA/Mysql/Tomcat应用程序中的Connection Closed Exception

问题

我最近负责一个Java Web应用程序,代码已经编写完成.该应用程序接收适度高流量,并在每天上午11点至下午3点之间达到高峰时段.该应用程序使用Spring,JPA(Hibernate),MYSQL DB.Spring已配置为使用tomcat jdbc连接池来建立与DB的连接.(帖子末尾的配置细节)

在过去的几天里,在应用程序的高峰负载时间内,由于tomcat对请求没有响应,应用程序已经停止运行.它需要多次重启tomcat.

通过tomcat catalina.out日志,我注意到了很多

Caused by: java.sql.SQLException: Connection has already been closed.
    at org.apache.tomcat.jdbc.pool.ProxyConnection.invoke(ProxyConnection.java:117)
    at org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:109)
    at org.apache.tomcat.jdbc.pool.DisposableConnectionFacade.invoke(DisposableConnectionFacade.java:80)
    at com.sun.proxy.$Proxy28.prepareStatement(Unknown Source)
    at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:505)
    at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:423)
    at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:139)
    at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1547)
    at org.hibernate.loader.Loader.doQuery(Loader.java:673)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
    at org.hibernate.loader.Loader.loadCollection(Loader.java:1994)
    ... 115 more
Run Code Online (Sandbox Code Playgroud)

这些经常在崩溃之前出现.

在这些异常之前更进一步,我注意到在Connection Closed异常之前放弃了很多Connections.

WARNING: Connection has been abandoned PooledConnection[com.mysql.jdbc.Connection@543c2ab5]:java.lang.Exception
    at org.apache.tomcat.jdbc.pool.ConnectionPool.getThreadDump(ConnectionPool.java:1065)
    at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:782)
    at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:618)
    at org.apache.tomcat.jdbc.pool.ConnectionPool.getConnection(ConnectionPool.java:188)
    at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:128)
    at org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider.getConnection(InjectedDataSourceConnectionProvider.java:47)
    at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423)
    at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
    at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:139)
Run Code Online (Sandbox Code Playgroud)

这些似乎经常出现在Connection Closed异常之前.这些似乎是日志即将崩溃的第一个症状.

分析

按日志,我开始查看是否存在可能导致问题的任何连接池配置/ mysql配置.通过一些优秀的文章,展示了生产环境池的调整.链接12

通过这些文章,我注意到:

  1. JHanik的文章(链接1)中的下面一行提到了这一点

    将abandonWhenPercentageFull的值设置为100意味着除非我们达到maxActive限制,否则不会将连接视为放弃. …

java spring tomcat hibernate connection-pooling

12
推荐指数
2
解决办法
2万
查看次数

用于动态数据库连接的连接池

问题设置基于Web服务(Spring/Java,Tomcat7和MySql),其中每个用户都有自己的数据库,因此每个请求都需要自己的连接.由于所有数据库都是在运行时动态创建的,因此在启动之前静态配置它们不是一种选择.

为了优化数据库连接使用,数据库连接池的实现会很棒,对吧?

使用Java/Spring:如何为动态数据库创建连接池?我对这里缺乏干净的选择感到震惊!

问题:Tomcat的连接池(据我所知也理解为C3P0)将每个新的DataSource实例视为一个完整的新连接池 - > stack-reference

  1. 创建具有通用MySql连接的静态数据源(不指定连接时的数据库)并使用带有此数据源的连接池以及适配的SQL语句是一个好主意吗?
    堆叠参考
  2. 如何开发基于自定义持久数据库的数据源池?有表演经验吗?有什么建议?任何图书馆都这样做?
  3. 或者通过动态地从Java动态创建Tomcat JNDI数据源来解决Tomcat的DataSource问题是否可行?
  4. 我无法相信没有更简单/简单的解决方案.Grails/Hibernate正在努力解决这个问题,Java/JDBC正在努力解决这个问题......是否通过动态创建用户特定数据库来分离用户数据这种罕见的用例?如果是这样,那么更好的设置是什么?

编辑

  1. 另一种选择是来自@ M.Deinum的建议,使用单个已配置的数据源并动态热交换以获得正确的连接 - > M.Deinum Blogstack-reference.
    如何使用上面的连接池执行?

java mysql tomcat connection-pooling jdbc

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

Spark Java框架中的连接池

Java Spark框架使用嵌入式Jetty作为Web服务器.Jetty支持使用HikariCP等工具进行连接池,并在XML文件中提供配置选项.但是,根据这些帖子,Spark确实允许配置Jetty.有很多使用Spark的例子,但他们要么不使用数据库,要么使用DriverManager连接数据库.

是否可以通过Spark中的数据源和JNDI配置连接池?如果是这样,怎么样?

java jndi connection-pooling jetty spark-java

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

Active Azure Sql连接超出了连接池限制

我们的Azure SQL数据库性能会在很长一段时间内显着降低,我们会在生产中解决问题.我们知道我们在其中一个表上有锁,但是这些锁不是死锁,它们是长锁,并且在一个小时左右的时间内性能恢复正常.我们试图找到关于如何获得这些长锁的所有可能场景(每个查询都超快,所有性能分析器都可以向我们展示导致长锁的原因).这个问题的原因如下图:

在此输入图像描述

Out连接池设置仅允许汇集200个连接.大多数时候,我们与数据库有大约10-20个开放/池化连接.然后突然一些活动连接开始增长,池完全被占用.虽然许多池连接保持在200以下,但我们看到许多活动连接使用sp_who2达到1.5k-2k连接(有时为4k-5k).

我使用Azure门户监控工具构建了相同的图表.它有不同的聚合期,但显示相同的问题: 在此输入图像描述

我们使用的连接字符串:

Data Source = [server] .database.windows.net; initial catalog = [database]; persist security info = True; user id = [user]; password = [password]; MultipleActiveResultSets = True; Connection Timeout = 30; Max Pool大小= 200;池=真;应用= [AppName的]

考虑到200个连接的连接池限制,这怎么可能?

ps:没有周期性任务,长时间运行的查询或其他任何工具,我们检查了与sp_who2数据库的所有活动连接.

c# sql-server connection-pooling azure entity-framework-6

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

如何检查HikariCP连接池在Java中是否有效?

Log4j 在我的应用程序中使用的配置文件中编写了以下属性当我运行项目时.

我正在关注message.does意味着在我的项目中配置连接池?如果不是那么它将如何?

INFO:internal.ConnectionProviderInitiator - HHH000130:实例化显式连接提供程序:com.zaxxer.hikari.hibernate.HikariConnectionProvider

我也提到了以下链接

链接在这里

数据源设置

hibernate.datasource.driver-class-name=com.mysql.jdbc.Driver
hibernate.datasource.url=jdbc:mysql://localhost:3306/mydb
hibernate.datasource.username=root
hibernate.datasource.password=root
Run Code Online (Sandbox Code Playgroud)

HikariCP设置

hibernate.hikari.dataSource.url=jdbc:mysql://localhost:3306/mydb
hibernate.hikari.idleTimeout=10
hibernate.hikari.maximumPoolSize=30
hibernate.hikari.minimumIdle=15
hibernate.connection.provider_class=com.zaxxer.hikari.hibernate.HikariConnectionProvider
hibernate.hikari.dataSourceClassName=com.mysql.jdbc.jdbc2.optional.MysqlDataSource
Run Code Online (Sandbox Code Playgroud)

java mysql hibernate connection-pooling hikaricp

12
推荐指数
3
解决办法
5239
查看次数