如何增加 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_ms600000ms的最大值。而且,看起来只有在分配 statement_timeout 会话变量时才会调用代码路径。通用路径是 BuildSession,使用 pg_yb_session_timeout_ms 标志。在 yb-tservers 中设置 --pg_yb_session_timeout_ms=300000 并重新启动它们应该可以正常工作。