Puncte:0

Șirul de interogare Mysql prea lung

drapel za

Mă confrunt cu un comportament mysql ciudat care apare între două mașini virtuale.

Când am un șir de interogare mai lung de 1457 de caractere, conexiunea pe care o folosesc se blochează.
Mă gândeam că problema era o interogare cu o mulțime de rezultate, dar apoi am descoperit asta șirul de interogare nu este important.

De exemplu:

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

atarna serverul.

Dacă elimin un singur caracter din acel șir, mysql returnează un set de înregistrări gol, așa cum era de așteptat. Nu există un astfel de utilizator și câmpul uname este varchar(64). Tabelul conține o singură înregistrare.

Am încercat să monitorizez socket-ul și am descoperit că șirul de interogare este retransmis de 20 de ori și apoi traficul se oprește dar clientul nu iese și conexiunea nu este întreruptă/închisă.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
    ...

Aceeași interogare făcută dintr-o altă instanță pe același server funcționează impecabil. Am încercat clientul terminal mysql oficial, un client terminal alternativ și un script, dar am obținut același rezultat.

drapel ua
Trimiteți un raport de eroare cu un exemplu concret la bugs.mysql.com
drapel us
Aceasta ar putea fi o problemă cu setarea MTU pe interfețele de rețea de pe gazdă. S-ar putea ca interogarea să ajungă într-un segment TCP prea lung, care este apoi abandonat de kernel.
Eineki avatar
drapel za
Mulțumesc pentru sugestie @RickJames. Este dificil să depuneți un raport de eroare. Problema este limitată la un singur server VM atunci când interacționează cu un anumit client VM. Am replicat cele două vm-uri și problema a dispărut. Am repornit cele două vm-uri originale și problema persistă. Dacă doar una dintre cele două mașini se schimbă, problema nu va apărea.
drapel ua
@Eineki - Mulțumesc că ai încercat. „client” -- client linie de comandă mysql? Sau altceva?
Eineki avatar
drapel za
Da, client de linie de comandă @RickJames mysql, mycli, un client alternativ de linie de comandă scris în python și un script php foarte simplu (conectați, trimiteți interogarea, preluați setul de înregistrări gol și închideți conexiunea) scris intenționat. Același rezultat. Încep să mă gândesc la mtu așa cum a subliniat #TeroKilkanen (lungimea șirului ar fi trebuit să facă să sune clopoțelul).

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.