연결이 중단되었습니다 (통신 패킷을 읽는 중 오류가 발생했습니다)


8

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

두 호스트 간의 연결 품질을 확인할 수 있습니까? 기본 100 핑은 ..
melsayed

답변:


4

제한된 데이터를 기반으로 클라이언트와 MySQL 서버 (호스트에 직접있을 수 있음) 사이에 방화벽이있어서 3306을 MySQL 서버에 허용하지만 초기 SYN 요청에 대한 응답 패킷을 차단하고 있는지 궁금합니다.

TCP 쪽에서 무슨 일이 일어나고 있는지 확인하기 위해 양쪽에서 패킷 덤프를 수행하거나 양쪽에 존재하는 방화벽을 검사 할 수 있습니다.


감사. 이를 정리하기 위해 어떤 데이터를 제공 할 수 있습니까? 내쪽에는 방화벽이 없지만 상대방에 대해서는 확실하지 않습니다. 대부분 연결이 작동하므로 방화벽이 아닌 것 같습니다. 패킷 덤핑을 시도했지만 트래픽이 많으며 문제는 하루에 몇 번만 표시됩니다. 필요한 패킷 만 캡처하는 필터를 정의하지 못했습니다.
PiTheNumber

4

나는 이것이 MySQL 문제가 아니라고 생각합니다.

전송 계층이 정상인지 확인하십시오. telnet [db_server] 3306?를 사용하여 TCP 연결을 얻을 수 있습니까 ?

클라이언트와 서버가 연결을 SSL로 암호화해야하는지에 대해 동의하고 있습니까?

공개 인터넷을 통해 mysql 연결을 실행하려는 많은 상황을 생각할 수 없습니다. 이것은 '외부에서 연결할 수 있음'이 의미하는 것입니다. 암호화되지 않은 경우 이는 큰 보안 위험이며 각 연결에 대해 SSL을 설정하는 오버 헤드가 너무 많아 대부분의 용도에 사용할 수 없습니다. 어떤 종류의 영구 암호화 터널을 사용하고 싶을 수도 있습니다.


텔넷 연결 및 대부분의 연결은이 문제가 나타나는 경우에만 제대로 작동합니다. 예, 공용 인터넷을 통한 연결입니다. 여기에서 암호화를 원하지만 다른 쪽 끝을 제어하지 않습니다. 어쨌든 먼저 연결을 안정화해야합니다.
PiTheNumber

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.