SessionPool 中连接过期后请求报错

提问参考模版:

nebula 版本:3.4.0
部署方式: 单机
安装方式:Docker
是否上生产环境: N

问题的具体描述:
我使用的是nebula-python,发现 session_pool 中的连接太久没用,服务器断开连接后再进行请求会报 nebula3.Exception.IOErrorException: TSocket read 0 bytes 错误,之后再请求又能正常连接。
之前提到过这个问题,回答告知[服务器默认关闭超过8小时闲置的连接
我后面将SessionPoolConfig的 idle_time=7200, interval_check=1800, 但是改好后 还是会遇到这个问题,请问有什么解决方案吗?

改graph的配置, 改完要重启

1 个赞

手册上说client_idle_timeout_secs 能设置为0,实际跑起来则报错,数值必须在 1~604800 之间呀。这样 的话 就算设置到最大值,最后还是会超时服务器断开呀,问题还是在的呀,有解决方案嘛?

我这边是做了个线程定时拿到快过期的session 做一次show hosts query, 保证它不过期。

1 个赞

大佬 能分享一下代码吗? 我依葫芦画瓢也搞一个 :thinking:

:sweat_smile: 我用go 写的,不是Python

大佬你要不分享下golang代码呗,golang我也会, 我借鉴下你的方案, 谢谢啦

sorry 事情有点多,我做的比较简单的处理

// Ping keep each session alive
func (cli *NebulaCli) Ping() {
	stmt := "show hosts"
	fmt.Println("Ping...")
	for i := 0; i < cli.max; i++ {
		cli.Query(stmt)
	}
}

func main() {

	defer nCli.Close()
	go func() {
		for {
			nCli.Ping()
			time.Sleep(9 * time.Minute)  // 比过期时间短一些
		}
	}()
}
2 个赞

好哒 谢谢大佬啦

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。