aerospike客户端EOFException排查

asp服务端采用的是3.23版本,客户端是aerospike-client 4.x版本。
客户端有时会出现这样的报错内容:

com.aerospike.client.AerospikeException: java.io.EOFException
	at com.aerospike.client.command.SyncCommand.execute(SyncCommand.java:139)
	at com.aerospike.client.AerospikeClient.execute(AerospikeClient.java:1579)
	at cn.tongdun.shenwei.core.storage.AerospikeStorage.defaultCall(AerospikeStorage.java:419)
	at cn.tongdun.shenwei.core.callable.DefaultRunnable.call(DefaultRunnable.java:76)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:750)
Caused by: java.io.EOFException: null
	at com.aerospike.client.cluster.Connection.readFully(Connection.java:239)
	at com.aerospike.client.command.ReadCommand.parseResult(ReadCommand.java:56)
	at com.aerospike.client.command.SyncCommand.execute(SyncCommand.java:84)
	... 7 common frames omitted

这是因为在asp版本5.1之前,服务端proto-fd-idle-ms默认值是60000(60s)。这个参数表示客户端与服务器之间的连接最长空闲时间,超过了这个时间,链接在服务端会被关闭,注意,这个是服务端的配置。而客户端的链接默认空闲时间配置是55s,也就是都采用默认值的情况下,意味着永远不会获取空闲连接(客户端idle time < 服务端idle time即可)

出现这个问题的原因在于我们客户端配置的socket idle时间是500,客户端拿了一个在服务端过期看来过期的链接,导致I/O异常

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值