如何增加 YugabyteDB 中的 YSQL 超时
How to increase YSQL timeout in YugabyteDB
[用户在 YugabyteDB Community Slack] 上发布的问题
运行 2.7.1.1 有 3 个主机和 5 个 tserver。
文档显示 ysql_client_read_write_timeout_ms
覆盖了 client_read_write_timeout_ms
gflag。默认为 ysql_client_read_write_timeout_ms=-1
但找不到 -1
是什么意思?不要覆盖我猜测的值。 client_read_write_timeout_ms=60000
.
无论如何,tserver 在 60s
显示超时,尽管我更改 ysql_client_read_write_timeout_ms=300000
并重新启动 tservers。
一个简单的测试:
ysqlsh -h x -Ux -d x -c"select count(*) from x.table;"
ERROR: Timed out: [Timed out (yb/rpc/outbound_call.cc:512): Read RPC (request call id 158) to x:9100 timed out after 59.996s, Timed out (yb/rpc/outbound_call.cc:512): Read RPC (request call id 160) to x:9100 timed out after 59.996s, Timed out (yb/rpc/outbound_call.cc:512): Read RPC (request call id 164) to x:9100 timed out after 59.996s, Timed out (yb/rpc/outbound_call.cc:512): Read RPC (request call id 165) to x:9100 timed out after 59.996s, Timed out (yb/rpc/outbound_call.cc:512): Read RPC (request call id 166) to x:9100 timed out after 59.996s]
使用 curl 验证所有 tservers 和 masters 上的测试值:
curl -s http://x:9000/varz | grep client_read_write_timeout_ms
--client_read_write_timeout_ms=60000
--ysql_client_read_write_timeout_ms=300000
正在寻找at the code in C++:
const auto default_client_timeout_ms =
(FLAGS_ysql_client_read_write_timeout_ms < 0
? std::max(FLAGS_client_read_write_timeout_ms, 600000)
: FLAGS_ysql_client_read_write_timeout_ms);
表示--client_read_write_timeout_ms
和600000ms
的最大值。而且,看起来只有在分配 statement_timeout
会话变量时才会调用代码路径。通用路径是 BuildSession
,使用 pg_yb_session_timeout_ms
标志。在 yb-tservers 中设置 --pg_yb_session_timeout_ms=300000
并重新启动它们应该可以正常工作。
[用户在 YugabyteDB Community Slack] 上发布的问题
运行 2.7.1.1 有 3 个主机和 5 个 tserver。
文档显示 ysql_client_read_write_timeout_ms
覆盖了 client_read_write_timeout_ms
gflag。默认为 ysql_client_read_write_timeout_ms=-1
但找不到 -1
是什么意思?不要覆盖我猜测的值。 client_read_write_timeout_ms=60000
.
无论如何,tserver 在 60s
显示超时,尽管我更改 ysql_client_read_write_timeout_ms=300000
并重新启动 tservers。
一个简单的测试:
ysqlsh -h x -Ux -d x -c"select count(*) from x.table;"
ERROR: Timed out: [Timed out (yb/rpc/outbound_call.cc:512): Read RPC (request call id 158) to x:9100 timed out after 59.996s, Timed out (yb/rpc/outbound_call.cc:512): Read RPC (request call id 160) to x:9100 timed out after 59.996s, Timed out (yb/rpc/outbound_call.cc:512): Read RPC (request call id 164) to x:9100 timed out after 59.996s, Timed out (yb/rpc/outbound_call.cc:512): Read RPC (request call id 165) to x:9100 timed out after 59.996s, Timed out (yb/rpc/outbound_call.cc:512): Read RPC (request call id 166) to x:9100 timed out after 59.996s]
使用 curl 验证所有 tservers 和 masters 上的测试值:
curl -s http://x:9000/varz | grep client_read_write_timeout_ms
--client_read_write_timeout_ms=60000
--ysql_client_read_write_timeout_ms=300000
正在寻找at the code in C++:
const auto default_client_timeout_ms =
(FLAGS_ysql_client_read_write_timeout_ms < 0
? std::max(FLAGS_client_read_write_timeout_ms, 600000)
: FLAGS_ysql_client_read_write_timeout_ms);
表示--client_read_write_timeout_ms
和600000ms
的最大值。而且,看起来只有在分配 statement_timeout
会话变量时才会调用代码路径。通用路径是 BuildSession
,使用 pg_yb_session_timeout_ms
标志。在 yb-tservers 中设置 --pg_yb_session_timeout_ms=300000
并重新启动它们应该可以正常工作。