A.2.9 Коммуникационные ошибки / Оборванные соединения
Начиная с MySQL 3.23.40 ошибка Aborted connection
выдается только в
случае, если mysqld
запущен с --warnings
.
В журнале ошибок могут присутствовать ошибки наподобие этой:
010301 14:38:23 Aborted connection 854 to db: 'users' user: 'josh'
(see section 4.9.1 Журнал ошибок).
Такие ошибки сигнализируют об одной из следующих ситуаций:
-
Клиентская программа не выполнила
mysql_close()
перед выходом.
-
Клиент бездействовал на протяжении более чем
wait_timeout
или
interactive_timeout
(see section 4.5.6.4 SHOW VARIABLES
).
-
Клиентская программа внезапно завершилась посреди передачи.
В подобных ситуациях увеличивается значение переменной сервера
Aborted_clients
.
Значение переменной сервера Aborted_connects
увеличивается в следующих
случаях:
-
Когда пакет соединения содержит неверную информацию.
-
Когда пользователь не имеет привилегий для соединения с базой данных.
-
Когда пользователь использует неверный пароль.
-
Когда на получение пакета соединения уходит более
connect_timeout
секунд.
Обратите внимание: все перечисленное выше может свидетельствовать о
попытке взлома базы данных!
See section 4.5.6.4 SHOW VARIABLES
.
Ниже перечислены другие причины проблем, которые могут возникнуть с
оборванными клиентами или разорванными соединениями.
-
Использование как полудуплексного, так и полного дуплексного
Ethernet-протокола под Linux. Данная ошибка присутствует во многих
Linux-драйверах Ethernet. Выполните тест на данную ошибку - для этого
следует передать очень большой файл через ftp-соединение между этими двумя
машинами. Если передача проходит в режиме всплеск-пауза-всплеск-пауза ...,
то можно констатировать наличие дуплексного синдрома Linux. Единственное
решение проблемы - отключить как полу-, так и полнодуплексную передачу на
концентраторах и коммутаторах.
-
Некоторая проблема с библиотекой потоков, вызывающая прерывания при
чтении.
-
"Криво" сконфигурированный TCP/IP.
-
Дефектные Ethernet-карты, концентраторы, коммутаторы или кабели... Такие
проблемы можно как следует диагностировать только путем замены
оборудования.
-
max_allowed_packet
слишком мала, или запросам требуется памяти больше,
чем было выделено для mysqld
(see section A.2.8 Ошибка Packet too large
).