От экземпляра GCE я выполняю следование из командной строки
> mysql -udbase -p -DmyDb -hmyIp
>
> mysql> SELECT account, count(account)
> -> FROM `headers`
> -> where labelIds='["SENT"]'
> -> group by account order by 2 desc limit 0,50;
После того как это получает выполнение, я контролирую команду SQL в другой оболочке путем проверки списка процессов. Я вижу SQL, processId и время, которое требуется для выполнения.
После этого последнего теста, processId, измененный от Запроса до сна после 1 172 секунд.
Однако команда mysql не получает ответ, это просто остается там, как будто все еще ожидая некоторого ответа от CloudSql.
После минуты или два, processID исчезает из списка процессов, и тем не менее команда mysql там, как будто ожидание.
После очень долгого промежутка времени (более чем 2 часа, оставленные его в течение ночи), я наконец добираюсь:
ОШИБКА 2013 (HY000) в строке 1: Потерянное соединение с сервером MySQL во время запроса
Это похоже на соединение между GCE, и CloudSQL разъединен, просто что клиент не понимает это.
Согласно рекомендациям в другом сообщении, я преувеличил числа в
sudo/sbin/sysctl-w сетевая ipv4.tcp_keepalive_time=1800 сетевая ipv4.tcp_keepalive_intvl=1800 сеть ipv4.tcp_keepalive_probes=50
Но единственная вещь, которую это, казалось, сделало, продлевают время между тем, когда запрос заканчивается и когда клиент наконец разъединяется.
Если примененный net_read_timeout, разве клиент не должен давать ошибку намного ранее?
Спасибо за помощь.
Я неправильно прочитал статью об устранении неполадок https://cloud.google.com/compute/docs/troubleshooting#communicatewithinternet , в которой все параметры исправлены