ОШИБКА CloudSQL 2013 от экземпляра GCE

От экземпляра 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, разве клиент не должен давать ошибку намного ранее?

Спасибо за помощь.

2
задан 28 July 2015 в 17:54
1 ответ

Я неправильно прочитал статью об устранении неполадок https://cloud.google.com/compute/docs/troubleshooting#communicatewithinternet , в которой все параметры исправлены

2
ответ дан 3 December 2019 в 11:36

Теги

Похожие вопросы