Назад | Перейти на главную страницу

Иногда: невозможно подключиться к хосту 127.0.0.1 или истекло время ожидания запроса. MySQL через Sequel PRO

Я борюсь с этой проблемой уже больше года, и это действительно вызывает у меня головную боль.

Я часто сталкиваюсь с тем, что не могу подключиться к серверу MySQL через SequelPRO. Если я подключусь к серверу по ssh, я могу нормально использовать mysql, просматривать процессы и т. Д. Мое веб-приложение тоже работает нормально.

Когда я пытаюсь подключиться к базе данных MySQL по SSH через Sequel PRO, сразу появляется это сообщение:


Невозможно подключиться к хосту 127.0.0.1, или истекло время ожидания запроса. Убедитесь, что адрес правильный и у вас есть необходимые привилегии, или попробуйте увеличить время ожидания соединения (в настоящее время 10 секунд). MySQL сказал: потеряно соединение с сервером MySQL при «чтении начального пакета связи», системная ошибка: 0


ЕДИНСТВЕННОЕ решение - перезагрузить сервер. Иногда я перезагружал сервер, но он все равно не работал. После нескольких перезагрузок работает. Но обычно это срабатывает каждый раз.

Как я подключаюсь:

Хост MySQL: 127.0.0.1 Имя пользователя: something Password: something Порт: 3306 SSH Host: server-ip SSH User: something SSH Key: путь к моему id_rsa Порт SSG: default / not-set

Любые идеи?

Моя версия Sequel Pro: v1.1, сборка 4499 Моя OSX: OS X El Capitan v 10.11

Сервер: Ubuntu 14.04.3 LTS (GNU / Linux 3.13.0-71-generic x86_64)

MySQL: версия 14.14 Distrib 5.7.10, для Linux (x86_64) с использованием оболочки EditLine

Немного выстрел в темноте, но я видел это раньше и сумел отладить его.

Хотя это настоящий причудливый край.

Если ваш clocksource установлен на jiffies, некоторые процессоры не синхронизируются друг с другом, что приводит к ситуации, когда время на одном процессоре отличается от времени на другом процессоре. Может быть разница всего в 1 секунду, чтобы вызвать проблему в mysql.

Вы можете проверить это, выполнив:

for i in $(seq 0 $(($(getconf _NPROCESSORS_ONLN)-1))); do taskset -c $i date & done

Каждая строка должна сообщать один и тот же результат, ни на секунду. Вам следует попробовать это несколько раз, чтобы убедиться, что вы просто не пересекли порог в 1 секунду во время теста.

Ошибка, с которой я столкнулся, заключалась в том, что один процессор отставал на 1 секунду от другого. Это привело к тому, что mysql запросил время, а затем снова сравнил время со следующим новым запросом (который был на расстоянии -1 секунды). Учитывая, что это неожиданно, оно будет переполнено, и mysql решил, что соединение на четыре миллиарда секунд старше, чем оно было.

Если это проблема, вам следует изменить источник тактовых импульсов на хосте с jiffies на tsc, hpet или acpi и проблема должна исчезнуть.

Упоминание 127.0.0.1 звучит так, будто вы используете SSH-туннелирование особенность SequelPro.

Видеть Как надежно держать SSH-туннель открытым для решения этой проблемы.

Вы можете быть уверены, что эта проблема возникла, если в следующий раз вы отключите сеанс SSH от сервера, повторно подключитесь, и он сработает.

Похоже, у вас возникли проблемы с подключением через SSH или обслуживанием туннеля SSH, об этих ошибках обычно сообщают в /var/log/auth.log. Вероятно, SequelPRO пытается использовать соединение, которое больше не доступно, застопорилось.

Вы также можете попробовать вручную настроить туннель SSH: http://www.sequelpro.com/docs/Set_up_an_SSH_Tunnel - если это работает, то это наверняка ошибка / проблема с SSH-соединением SequelPro.

Задайте в ~ / .ssh / config «ForwardAgent yes». Также grant all on db.* to 'user'@'127.0.0.1' identified by 'password'