无法填充池(没有可用的缓冲区)
我正在使用Wildfly 8.2并在打开某个网页时触发一系列数据库请求。 所有查询都通过JPA Criteria API调用,按预期返回结果 – 并且 – 它们都不会发出警告,错误或exception。 这一切都在Parallel Plesk中运行。
现在,我注意到在2到3天内出现以下错误,并且网站无响应。 我重新开始,我再等3天,直到它再次发生(取决于我的请求数量)。
我检查了我的linux服务器上的tcpsndbuf,我注意到它一直处于最大值。 除非我重新启动Wildfly。 显然它无法释放连接。
连接由JPA / Hibernate和Wildfly容器管理。 我不做任何特殊或自定义的交易处理,例如开盘,收盘。 等我把它留给了Wildfly。
我正在使用的MySQL驱动程序是5.1.21(mysql-connector-java-5.1.21-bin.jar)
在standalone.xml中,我定义了以下数据源数据源值(以及其他值):
TRANSACTION_READ_COMMITTED 3 10 32 true </statement
有没有人经历过相同的tcpsndbuf值(或这个错误)的上升? 如果您需要更多配置或日志文件,请告诉我们。 谢谢!
更新尽管有以下额外的超时设置,它仍然会进入挂钩。 因此,每当达到最大tcpsndbuf时,它将使用100%的CPU时间。 ,
尝试添加此Hibernate属性:
after_transaction
默认情况下, JTA要求在每个语句之后释放连接 ,这对于大多数用例来说是不可取的。 大多数驱动程序不允许在多个XA事务上多路复用连接。
你用openvz吗? 我认为应该在serverfault上询问这个问题。 它与linux配置有关。 你可以阅读: tcpsndbuf 。 您应该计算打开的套接字并检查条件:
- Spring / Hibernate中适当的缓存使用
- Hibernate自定义类型以避免’引起:java.sql.SQLException:Stream已经关闭’
- Websphere 8.5.5上的Spring Data JPA + Hibernate
- 如何使用Hibernate / JPA注释覆盖GenerationType策略?
- 限制JPA中集合的大小
- 使用hhnate的ehcache阻止装饰器
- JPA:DELETE WHERE不会删除子项并抛出exception
- Hibernate – java.lang.OutOfMemoryError:Java堆空间
- 使用具有多对多关系的Grails’withCriteria函数重复的问题