- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Kubernetes 中运行了几个 Spring Boot 应用程序。每个应用程序都使用 spring JPA 连接到 Postgresql 10.6 数据库。我注意到的是,当 Pod 被意外杀死时,与数据库的连接没有被释放。
运行SELECT sum(numbackends) FROM pg_stat_database;
在数据库上返回让我们说 50,在杀死几个运行 spring 应用程序并重新运行查询的 pod 后,这个数字跳到 60,这最终导致与 postgresql 的连接数超过最大值并阻止重新启动的 pod 的应用程序连接到数据库.
我已经尝试过使用 postgresql 选项 idle_in_transaction_session_timeout
将其设置为 15 秒,但这不会丢弃旧连接,并且数量会不断增加。
我正在使用 com.zaxxer.hikari.HikariDataSource
我的 spring 应用程序的数据源,想知道是否有办法防止这种情况发生,无论是在 posgresql 还是 spring boot 方面。
欢迎任何建议或建议。
Spring 启动版本:2.0.3.RELEASE
Java版本:1.8
PostgreSQL 版本 10.6
最佳答案
这个问题不仅会出现在 kubernetes pod 上,而且还会出现在服务器上运行的简单应用程序被强制终止(如 Linux 上的 kill -9 pid
)并且没有机会通过关闭 Hook 进行清理以进行 Spring 启动。我认为在这种情况下,应用程序方面没有任何帮助。但是,您可以尝试通过数据库端的几种方法清理非事件连接,如 here 所述。 .
关于postgresql - 在 kubernetes pod 被杀死后释放 JDBC 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54958870/
我试图理解什么是 -XX:OnOutOfMemoryError='kill %p' 下面的命令是什么意思? 我不确定 %p 是什么意思? exec /bin/bash -c "LD_LIBRARY_P
我试图理解什么是 -XX:OnOutOfMemoryError='kill %p' 下面的命令是什么意思? 我不确定 %p 是什么意思? exec /bin/bash -c "LD_LIBRARY_P
这个问题在这里已经有了答案: Solving "adb server version doesn't match this client" error [duplicate] (17 个答案) 关闭
我是一名优秀的程序员,十分优秀!