Вопрос: Прерванное соединение (получена ошибка чтения пакетов связи)


Отображается mysql error.log

[Warning] Aborted connection 320935 to db: '...' user: '...' host: '...' (Got an error reading communication packets)

Пока клиентская сторона получает:

Lost connection to MySQL server at 'reading initial communication packet', system error: 111
Lost connection to MySQL server at 'reading authorization packet', system error: 0
and after a while: Host '...' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'

Я читаю Руководство пользователя mysql об этом и многом другом. Поэтому я изменил некоторые значения в my.cnf

max_allowed_packet      = 512M
connect_timeout = 60
net_read_timeout = 120
innodb_buffer_pool_size = 5G

Посмотрел журнал запросов о неисправном соединении:

22400 Connect user@host on dbname
22400 Query SELECT @@sql_mode
22400 Query     SET SESSION sql_mode=''
22400 Query     SET NAMES utf8
22400 Init DB   dbname
22400 Init DB   dbname

Состояние проверенной таблицы. bind-address - это IP-адрес сервера, но мне нужно иметь возможность подключаться извне.

Aborted_connects is 196

7
2018-06-11 14:44


Источник


Можете ли вы проверить качество соединения между двумя хостами? базовые 100 пингов должны делать .. - melsayed


Ответы:


Исходя из ограниченных данных, я задаюсь вопросом, есть ли у вас брандмауэр между клиентом и сервером MySQL (он может быть непосредственно на узлах), который разрешает 3306 серверу MySQL, но блокирует пакеты ответа для первоначального запроса SYN.

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


4
2017-07-04 20:18



Благодарю. Какие данные я могу предоставить для устранения этого? У меня нет брандмауэра на моем конце, не уверен в другой стороне. В основном работает соединение, поэтому я думаю, что это не брандмауэр. Я попробовал сброс пакетов, но есть много трафика, и проблема проявляется только несколько раз в день. Мне не удалось определить фильтр, который только фиксирует нужные мне пакеты. - PiTheNumber


Я подозреваю, что это не проблема mysql как таковая.

Убедитесь, что транспортный уровень в порядке. Можете ли вы получить tcp-соединение, используя telnet [db_server] 3306 ?

Согласны ли ваш клиент и сервер о том, должно ли соединение быть зашифровано SSL?

Я не могу придумать много ситуаций, когда я хотел бы запустить соединение mysql в общедоступном Интернете, что, как я подозреваю, означает то, что вы подразумеваете под «возможностью подключения извне». Если он не зашифрован, это огромный риск для безопасности, и накладные расходы на настройку SSL для каждого подключения слишком высоки для большинства целей. Возможно, вам захочется взглянуть на использование постоянного зашифрованного туннеля.


3
2017-07-06 17:52



telnet connect и большинство соединений работают нормально только время от времени эта проблема возникает. Да, это соединение через интернет. Я хотел бы иметь шифрование здесь, но я не контролирую другой конец. Во всяком случае, мне сначала нужно стабилизировать соединение. - PiTheNumber


Прерванное соединение считается ошибкой соединения в MySQL, которая не может регистрироваться в журнале ошибок MySQL. Видеть удаленные TCP-соединения не регистрируются как ошибки, но приводят к блокировке хоста,


1
2017-08-30 03:05