通过JDBC驱动连接GBase 8a数据库时,如果连接断开,则会报这类错误:The last packet successfully received from the server was XXXX milliseconds ago. The last packet sent successfully to the server was XXXXX milliseconds ago.
Directory Navigation
报错样例

报错原因
JDBC的数据库连接,处于关闭状态。
如果2个时间数值较大
比如几秒,几十秒或者更长,则一般是使用时,连接已经是关闭状态。一般原因是连接超时已经断开了一段时间,而客户端使用前没有判断连接是否可用。
参考 GBase 8a空闲超时参数Wait_timeout用法
解决方案一般是使用连接池,并配置检测连接可用性。
如果2个时间数值很小
比如就几个毫秒,那可能是执行过程中,连接意外断开了。需要排查如下几种情况
服务器是否出现宕机
包括硬件故障,数据库服务停止,服务器意外宕机等。
SQL执行时间超过设定值
如果SQL执行时间超过了允许的最大值,则服务器端会强行断掉连接。相关参数请参考 GBase 8a集群SQL执行超时参数
这种情况,会多次出现,因为该SQL会经常超过设定值。
排查连接的数据库gcluster的express.log, 里面会有SQL运行时间超时后,强行 killQuery的信息输出。
网络相关故障
这个除非硬件出问题了,一般都是偶发,且断开时间很长才可以。
包括网卡重启,也会导致这个问题。
可以排查messages操作系统日志。