连接池参数是数据库连接优化的核心,直接影响连接的创建效率和资源利用率。
Initial Capacity(初始连接数)与Maximum Capacity(最大连接数)设置为相等,避免运行时动态创建连接的开销(创建连接是高消耗操作)。例如,若应用需要20个并发数据库操作,可将两者均设为20。Capacity Increment(增长步长),控制连接池扩容时的批量创建数量(如步长设为5,每次扩容增加5个连接),但建议优先保持初始与最大容量相等。Allow Shrinking(允许自动收缩),避免连接池在空闲时自动回收连接至初始容量,减少不必要的连接重建。连接超时参数用于防止连接泄漏和无效连接占用资源,需根据应用实际情况调整:
Inactive Connection Timeout(非活动连接超时)默认60秒,若应用无连接泄漏问题,可设置为0(禁用)。若有短时间未归还连接的情况(如代码未正确关闭连接),可适当增大该值(如120秒),避免频繁回收有效连接。JTA Configuration调整Timeout Seconds(事务超时),确保长时间运行的事务不会占用连接。例如,若业务事务通常在30秒内完成,可将超时设置为45秒,避免连接被长期占用。为避免将无效连接提供给应用,WebLogic提供三个测试选项:Test Reserved Connections(获取连接时测试)、Test Created Connections(创建连接时测试)、Test Released Connections(释放连接时测试)。
Test Reserved Connections(默认SQL语句为SELECT 1 FROM DUAL),在应用获取连接时快速验证连接有效性。虽会带来约3%的性能下降,但能有效防止无效连接流入应用层。连接泄漏是导致连接池耗尽的常见原因,需通过以下方式排查和修复:
Connection Pools标签下,开启Connection Leak Profiling(连接泄漏分析),监控A JDBC pool connection leak was detected(检测到连接泄漏)日志。try-with-resources语句或在finally块中关闭),避免连接未释放导致池资源耗尽。例如:try (Connection conn = ds.getConnection();
Statement stmt = conn.createStatement()) {
// 执行数据库操作
} catch (SQLException e) {
// 异常处理
}
连接池大小需与应用的并发需求匹配,避免过大或过小:
Environment > Servers > [Server Name] > Configuration > Tuning > Execute Queues查看执行线程数)。例如,若执行线程数为50,连接池最大容量至少为50。/etc/sysctl.conf文件,优化TCP连接参数(如降低vm.swappiness至10以减少交换分区使用、调整net.ipv4.tcp_fin_timeout至30秒以缩短连接回收时间),提升系统处理高并发连接的能力。sendmail、cups),释放内存和CPU资源,确保WebLogic有足够资源处理数据库连接。