服务器的Tomcat程序在某一个时间段回有大量的数据连接,之后查看数据错误日志看到报错信息如下:
Error: 18056, Severity: 20, State: 51.
The client was unable to reuse a session with SPID 161, which had been reset for connection pooling. The failure ID is 51. This error may have been caused by an earlier operation failing. Check the error logs for failed operations immediately before this error message.
使用的是阿里云的RDS,问了阿里云的说这个报错就是连接池使用问题导致的. 可以不用连接池试试.
遇到了同样的问题,在CSDN看到了,希望阿里云团队能够给出正确、标准的答案~请查看
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
遇到您描述的错误信息,这确实与数据库连接池的管理有关。在阿里云RDS的使用场景中,当应用服务器(如运行Tomcat的服务器)通过连接池频繁地与RDS交互时,如果管理不当,可能会出现连接被重置或无法复用的问题。错误信息中的“Error: 18056, Severity: 20, State: 51”通常意味着SQL Server尝试复用一个已经被重置的连接时失败了,这可能是由于连接池配置不当、超时设置不合理或者数据库端的会话管理问题导致的。
针对这个问题,以下是一些建议和最佳实践,帮助您优化和解决问题:
检查连接池配置:
minIdle
/initialSize
)、最大连接数(maxActive
/maxPoolSize
)是否合理。过小的最小连接数可能导致频繁创建新连接,而过大的最大连接数可能耗尽数据库资源。minEvictableIdleTimeMillis
)和测试连接是否有效(testOnBorrow
, testWhileIdle
)的策略,确保连接池中的连接是活跃可用的。优化超时设置:
loginTimeout
)和命令超时设置,以及连接池的超时配置,确保它们与应用的实际需求相匹配,避免因超时导致的连接异常。监控和日志:
资源限制与优化:
定期维护:
咨询阿里云技术支持:
请记得,虽然不使用连接池可以避免某些管理上的复杂性,但在高并发场景下,合理的连接池配置对于提升系统性能和稳定性至关重要。因此,优化连接池设置通常是更推荐的解决方案。