我正在完成一个小项目,并且在初始发布之前我正在进行一些性能调整。它是一个Web应用程序,因此它只以XHR和页面加载请求的形式接收HTTP请求。
在应用程序启动时,将从Tomcat服务器(通过JNDI)检索DataSource并将其存储在应用程序中。这是一个oracle.jdbc.xa.client.OracleXADataSource
,据我所知(从我所阅读和观察到的内容),它正在汇集连接。
在应用程序中,对服务器的每个请求都会在第一次SQL调用时打开自己的连接(如果有的话)。在每个请求结束时,连接将关闭(如果已打开)。
因此,作为性能调优的一部分,我正在尝试通过减少进行数据库连接所需的时间来提高这些请求的响应能力。 您认为建立数据库连接的可接受时间是多少?
这是我到目前为止的基准,每个请求 -
第一个连接打开并“关闭”后,看起来连接已合并并重新使用。 从池化数据源建立连接的时间是否相当于50毫秒?
long start = System.nanoTime();
//oracle.jdbc.xa.client.OracleXADataSource
Connection connection = dataSource.getConnection();
log.info("Connection made in: " + ((System.nanoTime()-start)/1000000) + " ms.");
答案 0 :(得分:1)
如果连接是池,这意味着它们(大部分)在整个时间内保持打开状态,所以在打开连接时应该没有时间等待(除非需要创建新连接以处理当前连接的情况)工作量)。建议您在项目中添加commons-dbcp或c3p0以保证合并。