Учитывая, что можно войти в систему как пользователь, затем получить это сообщение об ошибке, сообщение, вероятно, прибывает из файлов инициализации пользователя (/etc/profile
, ~/.profile
, ~/.bash_profile
или подобный). Попытайтесь проследить эти сценарии профиля; как рассматриваемый пользователь, выполненный
bash --login -x
Можно установить универсальные сообщения проверки активности TCP, я думаю, что существует установка ядра для этого. Но они являются обычно намного менее частыми (часы). Существует ПРАКТИЧЕСКОЕ РУКОВОДСТВО Проверки активности TCP, которое, кажется, имеет детали.
С другой стороны, почему не только туннелируют Подключение mysql по SSH, затем можно ли использовать сообщения проверки активности SSH?
$ ssh -L1234:127.0.0.1:3306 -o ServerAliveInterval=300 user@mysql-server
... (in another terminal)
$ mysql -u user -p -h 127.0.0.1 -P 1234
Третья опция состояла бы в том, чтобы создать туннель (например, OpenVPN) к Вашему серверу, и затем это обработает проверку активности (и прозрачно повторное подключение, и т.д.).
PS: "наши драгоценные ресурсы" аргумент в пользу истекающих установленных соединений TCP за 30 минут являются БАКАЛАВРОМ НАУК. К сожалению — я был на их месте прежде — некоторое оборудование является БАКАЛАВРОМ НАУК также. Например, BCP 142/RFC 5382 дает минимальное время 2 часов 4 минуты (и это - то, только если брандмауэр не может определить, все еще ли хост).
Клиентские значения по умолчанию MySQL CLI с автоподключением, если соединение потеряно во время сессии. Документация: MySQL Tips & Controlling Automatic Reconnection Behavior.
Действительные решения состояли бы в том, чтобы работать с власть имущими и выяснить решение, которое работает на членов команды разработки.
Естественно это заняло бы время, таким образом, временное решение, возможно, должно было бы быть обработано. Я рекомендовал бы отключить автоподключение MySQL (--skip-reconnect
) и создание простого сценария удара для обработки повторного соединения. Не хорошая идея, но мог бы помочь.
#!/bin/bash
PROGRAM="/path/to/mysql"
ARGS="--skip-reconnect"
while [ 1 ]; do
$PROGRAM $ARGS
sleep 1
echo -n "Lost Connection... Reconnect[Y]"
read USER_INPUT
case x$USER_INPUT in
x)
echo "Reconnecting..."
;;
x[yY])
echo "Reconnecting..."
;;
*)
echo "Stopping..."
break
;;
esac
done
Это делает [114489]не[114490] необходимым перекомпилировать приложение (в данном случае MySQL), оно полностью прозрачно.