Porównaj ceny domen i usług IT, sprzedawców z całego świata

Przerwane połączenie (wystąpił błąd podczas odczytu pakietów komunikacyjnych)


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

A po stronie klienta:
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'

czytam

Podręcznik mysql
http://dev.mysql.com/doc/refma ... .html
o tym i wielu innych tematach. Więc zmieniłem niektóre wartości w my.cnf
max_allowed_packet      = 512M
connect_timeout = 60
net_read_timeout = 120
innodb_buffer_pool_size = 5G

Przejrzał dziennik żądań zerwanego połączenia:
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

Sprawdziłem stan stołu. bind-address to adres IP serwera, ale muszę połączyć się z zewnątrz.
Aborted_connects is 196

Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Na podstawie ograniczonych danych zastanawiam się, czy masz zaporę ogniową między klientem MySQL a serwerem (może to być bezpośrednio na hostach), która pozwala 3306 na serwer MySQL, ale blokuje pakiety odwetowe na pierwotnym żądaniu SYN.
Możesz zrzucić pakiet z obu stron, aby dowiedzieć się, co się dzieje po stronie TCP i/lub sprawdzić zapory ogniowe istniejące między obiema stronami.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Podejrzewam, że to nie jest problem mysql per se.
Upewnij się, że warstwa transportowa jest w porządku. Czy możesz uzyskać połączenie TCP za pomocą
         telnet [db_server] 3306
?
Czy Twój klient i serwer zgadzają się, czy używać szyfrowania SSL?
Nie pamiętam wielu sytuacji, w których chciałbym nawiązać połączenie mysql przez publiczny Internet, co, jak podejrzewam, jest dokładnie tym, co masz na myśli przez „łączność zewnętrzną”. W postaci niezaszyfrowanej stanowi to ogromne zagrożenie bezpieczeństwa, a narzut związany z konfiguracją SSL na podstawie połączenia jest zbyt wysoki dla większości zastosowań. Możesz użyć jakiegoś trwałego zaszyfrowanego tunelu.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Przerwane połączenie jest uważane za błąd połączenia w MySQL i może nie zostać zarejestrowane w dzienniku błędów MySQL. Widzieć

Zerwane połączenia TCP nie są rejestrowane jako błędy, ale prowadzą do blokowania hosta
http://bugs.mysql.com/bug.php?id=24761
.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się