Рейтинг:0

Строка запроса Mysql слишком длинная

флаг za

Я испытываю странное поведение mysql, которое происходит между двумя виртуальными машинами.

Когда у меня есть строка запроса длиннее 1457 символов, используемое соединение зависает.
Я думал, что проблема была в запросе с кучей результатов, но потом обнаружил, что строка запроса не важна.

Например:

select * from users where uname = "abcdeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffpooooooooooppppppppfooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooffffffseroieeeeuuwwwwwwwwwwwuii";

вешает сервер.

Если я удалю один символ из этой строки, mysql вернет пустой набор записей, как и ожидалось. Такого пользователя нет, а поле uname равно varchar(64). Таблица содержит только одну запись.

Я попытался отслеживать сокет и обнаружил, что строка запроса повторно передается 20 раз, а затем трафик останавливается, но клиент не выходит, а соединение не прерывается/закрывается.cd

192.168.0.111:43012 -> 192.168.0.112:mysql
    ...
    bytes_sent: 22614
    bytes_retrans: 20260
    bytes_acked:329
    bytes_received:8208
    segs_out: 28
    segs_in:10
    data_segs_out:18
    data_segs_in:8
    ...

Тот же самый запрос, сделанный из другого экземпляра на тот же сервер, работает безупречно. Я попробовал официальный терминальный клиент mysql, альтернативный терминальный клиент и скрипт, но получил тот же результат.

флаг ua
Отправьте отчет об ошибке с конкретным примером на bugs.mysql.com.
флаг us
Это может быть связано с настройкой MTU на сетевых интерфейсах хоста. Возможно, запрос заканчивается в слишком длинном TCP-сегменте, который затем отбрасывается ядром.
Eineki avatar
флаг za
Спасибо за предложение @RickJames. Трудно подать отчет об ошибке. Проблема ограничена одним сервером vm, когда он взаимодействует с конкретным клиентом vm. Я реплицировал две vms, и проблема исчезла. Я перезагрузил две оригинальные vms, и проблема не устранена. Если изменится только одна из двух машин, проблема не возникнет.
флаг ua
@Eineki - Спасибо за попытку. «клиент» - клиент командной строки mysql? Или что-то другое?
Eineki avatar
флаг za
Да, @RickJames клиент командной строки mysql, mycli, альтернативный клиент командной строки, написанный на python, и очень простой php-скрипт (подключение, отправка запроса, получение пустого набора записей и закрытие соединения), написанный специально. Тот же результат. Я начинаю думать о mtu, как указал #TeroKilkanen (длина струны должна была заставить этот колокольчик звонить).

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.