在pg 的测试中,发现了一个bug
portal "" prepared statement 3234342 does not exist
这个错误,目前已经可以重现了,基本可以确定是一个bug
从这几次测试来看,跟并发有一定关系,跟jdbc 的连接池参数 prepared cache 的大小有一定关系。
刚才开始测试时,大约5分钟,就可以重现问题。当时的prepared cache 设置为8
换为高性能的机器, 并发扩大到20 , 在9个小时的压力测试中,共出现 24次
第一次出现错误实在压力测试开始后2小时左右。 prepared cache 设置为50 。
目前官方没有patch 发布 , 没有patch 在线上使用是基本不太可能了,除非绕过去。
有没有办法绕过去? , 从jdbc 的doc 上看, 如果能去掉 prepared statements 应该就可以绕过去,可能会涉及到jdbc 功能的降级。
网上有人提及: 在jdbc 的url 上面设置参数 : protocolVersion=2 ,让jdbc 运行在2.0 版本上。
可以规避这个问题。需要进一步测试。
【后记 】
Re:[lisiliang,1楼]
进行了一轮测试,发现 protocolVersion=2 不起作用,配置了,resin 无法启动。
] Caused by: org.postgresql.util.PSQLException: 无法以要求的通讯协定 2;characterEncoding=GBK 建立连线。
到目前为止这个问题无解啦。
网上讨论了一番
采用session 级的复用, resion-query_list=''
运行过程中,会报很多错误,似乎引进了更多的问题。
这个问题暂时无解了。
如果修改应用代码,成本似乎太高。 需要开发同事确认。