【发布时间】:2015-07-29 00:36:58
【问题描述】:
在 GCE 实例中,我正在从命令行执行以下操作
mysql -udbase -p -DmyDb -hmyIp 一旦它开始运行,我通过检查进程列表来监控另一个 shell 中的 SQL 命令。我看到了 SQL、processId 和执行时间。 在最后一次测试之后,processId 在 1172 秒后从 Query 变为休眠。 然而,mysql命令并没有收到响应,它只是停留在那里,好像还在等待来自CloudSql的一些响应。 一两分钟后,processID从进程列表中消失,mysql命令还在,好像在等待。 经过很长一段时间(30 到 60 分钟之间),我终于得到: ERROR 2013 (HY000) at line 1: 在查询期间丢失与 MySQL 服务器的连接 就像GCE和CloudSQL之间的连接被切断了,只是客户端没有意识到。 根据另一篇文章的建议,我夸大了 sudo /sbin/sysctl -w net.ipv4.tcp_keepalive_time=1800 net.ipv4.tcp_keepalive_intvl=1800 net.ipv4.tcp_keepalive_probes=50 但这似乎唯一能做的就是延长查询完成和客户端最终断开连接之间的时间。 如果应用了net_read_timeout,客户端不应该更早地给出错误吗? 感谢您的帮助。
【问题讨论】:
标签: mysql google-compute-engine google-cloud-sql