Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NebulaPoolConfig中timeout参数,导致新创建session失败的问题 #387

Closed
vchangpengfei opened this issue Nov 17, 2021 · 3 comments
Closed
Labels
type/enhancement Type: make the code neat or more efficient

Comments

@vchangpengfei
Copy link
Contributor

在查询的应用中 新创建的session,会有两个操作1 authenticate 认证操作 2: use space操作-(第一次会比较慢,所以这里默认执行一次)
当应用启动设置了超时参数,超时参数是绑定在每个connection上的,所以上面的 1,2 会复用timeout参数
复用时 如果 meta集群负载高,或者 use space操作 时间长,会导致timeout 以至于 session 永远创建不成功

@Nicole00
Copy link
Contributor

在查询的应用中 新创建的session,会有两个操作1 authenticate 认证操作 2: use space操作-(第一次会比较慢,所以这里默认执行一次) 当应用启动设置了超时参数,超时参数是绑定在每个connection上的,所以上面的 1,2 会复用timeout参数 复用时 如果 meta集群负载高,或者 use space操作 时间长,会导致timeout 以至于 session 永远创建不成功

你这个需求类似于Mysql 的 statement timeout, Mysql JDBC支持对每个查询语句设置不同的timeout, 但底层实现其实是把每个sql封装成了一个task,会有一个Timer来监听当前的sql查询,当超时时就会抛出异常。

你可以根据业务应用的使用,将pool中的超时时间设置为0, 然后针对不同的execute查询设置Timer 超时时间,当超出业务允许最大的执行时间时由Timer触发超时异常。

@vchangpengfei
Copy link
Contributor Author

vchangpengfei commented Dec 24, 2021

现在的情况时,client初始化的时候 设置了超时时间,因为这个超时时间,可能导致session 认证不成功,因为认证操作比较耗时;
按你的说法我得把超时时间设置成0,在业务层面处理超时,这样的话,超时时间参数的意义在哪,直接不要暴露出来,默认是0就好了

@Sophie-Xie Sophie-Xie added the type/enhancement Type: make the code neat or more efficient label Nov 30, 2022
@Nicole00
Copy link
Contributor

目前我们有jdbc,可以类似于mysql 在jdbc上做Timer的监控,监控连接和请求各自的超时时间。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type/enhancement Type: make the code neat or more efficient
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants