问题 remote()
或 remoteSecure()
表函数允许从另一个 ClickHouse 节点访问远程表。
在将这些函数用于与远程节点距离超过 100 毫秒(延迟方面)的节点上时,通常会遇到以下超时错误。
4776d4bd8190 :) SELECT * FROM remoteSecure('HOSTNAME.us-east-2.aws.clickhouse.cloud', DATABASE, TABLE, 'USER', 'USER_PASSWORD')
SELECT *
FROM remoteSecure('HOSTNAME.us-east-2.aws.clickhouse.cloud', DATABASE, TABLE, 'USER', 'USER_PASSWORD')
Query id: 2bd6ddd0-66d9-4d19-830f-87e3cec3724b
0 rows in set. Elapsed: 1.213 sec.
Received exception from server (version 22.6.9):
Code: 519. DB::Exception: Received from localhost:9000. DB::NetException. DB::NetException: All attempts to get table structure failed. Log:
Code: 279. DB::NetException: All connection tries failed. Log:
Code: 209. DB::NetException: Timeout: connect timed out: 18.218.245.169:9440 (hc7d963h1t.us-east-2.aws.clickhouse.cloud:9440, connection timeout 100 ms). (SOCKET_TIMEOUT) (version 22.6.9.11 (official build))
Code: 209. DB::NetException: Timeout: connect timed out: 18.218.245.169:9440 (hc7d963h1t.us-east-2.aws.clickhouse.cloud:9440, connection timeout 100 ms). (SOCKET_TIMEOUT) (version 22.6.9.11 (official build))
Code: 209. DB::NetException: Timeout: connect timed out: 18.218.245.169:9440 (hc7d963h1t.us-east-2.aws.clickhouse.cloud:9440, connection timeout 100 ms). (SOCKET_TIMEOUT) (version 22.6.9.11 (official build))
. (ALL_CONNECTION_TRIES_FAILED) (version 22.6.9.11 (official build))
. (NO_REMOTE_SHARD_AVAILABLE)
解决方法 要增加连接超时时间,请将 connect_timeout_with_failover_secure_ms
设置为更高的值(例如 1 秒),而不是默认的 100 毫秒。
4776d4bd8190 :) SELECT * FROM remoteSecure('HOSTNAME.us-east-2.aws.clickhouse.cloud:9440', DATABASE, TABLE, 'USER', 'USER_PASSWORD') SETTINGS connect_timeout_with_failover_secure_ms = 1000
SELECT *
FROM remoteSecure('HOSTNAME.us-east-2.aws.clickhouse.cloud:9440', DATABASE, TABLE, 'USER', 'USER_PASSWORD')
SETTINGS connect_timeout_with_failover_secure_ms = 1000
Query id: 8e2f4d41-307b-4e61-abb8-809190023247
┌─x─┐
│ 1 │
└───┘
1 row in set. Elapsed: 2.403 sec.