ClickHouse/clickhouse-java

jdbc url set socket_timeout parameters is useless

Jiangnewtown opened this issue · 9 comments

I want to use DBeaver to connect to ClickHouse using the JDBC HTTP interface. However, the session timeout is 30 seconds. I tried adding socket_timeout=300000 to the URL settings, but it was ineffective.

I also attempted to modify the JDBC driver settings to forcibly pass the socket_timeout=300000 parameter in the HTTP URI, but an error occurred, indicating that the server does not support this parameter. Additionally, I tried changing the socket_timeout value directly in the driver settings, but it had no effect.

image

My question is, is there a way to increase the session timeout time while using DBeaver or DbVisualizer to execute a SQL query? Specifically, how can I specify parameters during the connection to extend the session timeout?

I am not sure if this is a bug. I have seen others mention on URL that this approach works, but it does not work for me with the latest JDBC driver.

Good day, @Jiangnewtown!
There is a dedicated property:

    SESSION_TIMEOUT("session_timeout", 0,
            "Session timeout in seconds. 0 or negative number means same as server default."),

Would you please describe what error do you get?
Do you have a stack trace?

I would like to understand what timeout actually happens.

Thanks!

@Jiangnewtown did it help?

I will try it tomorrow,Thanks a lot. @chernser

I tried modifying the driver configuration in Dbeaver to include the session_timeout parameter in the request URL, but it had no effect. I still cannot change the disconnection time of this HTTP connection.
image

I used Wireshark to capture packets and saw that this connection disconnects after 30 seconds. The session_timeout I set did not take effect.
image

@Jiangnewtown
session timeout is in seconds - so your value in your example is too high, I think.

session_timeout | Number of seconds of inactivity before the identified by the session id will timeout and no longer be considered valid. Defaults to 60 seconds.

also you may try connection_ttl (time in ms) - value like 10000 is 10 seconds

when I set the session_timeout to a lower value,the session timeout also not changed,I guess it may a bug from clickhouse server or clickhouse does not support this feature,
connection_ttl was not support @chernser
image

@Jiangnewtown that is strange that parameter is not working - I will look into it. It should be a client side parameter only.

What is your desired result? Do you want to reduce life of a connection or do you want to make it longer? I just trying to find a solution for your problem now.

Thanks!

@chernser I want to make the connection longer, I tried a lot of ways but did not find a solution.

Thanks very much !

@Jiangnewtown
Connection mostly controlled on server side. As I remember it is between 10 and 30 seconds.
This server configuration https://clickhouse.com/docs/en/operations/server-configuration-parameters/settings#keep-alive-timeout might help.