공유기에 내 PC 와 잉여 노트북에 MariaDB 설치함.

C++ 기반 MariaDB API 를 포팅하고 for 문을 약 25만번 돌면서

select 를 날려 값이 중복되는지 체크하는, 복잡하지 않은 테스트였다.

 

노트북에서 테스트가 잘 되어 회사 서버(Ubunru) 에 설치하여 똑같이 테스트를 진행하는데

Lost connection to MySQL server during query.

가 뜨는 것이었다.

 

구글링해보니 이래저래 많은 해결책이 있어 금방 해결하겠다 싶었는데, 뭘 해도 해결이 안됨.

정말, 검색해서 나오는 건 다 해본듯 하다. 심지어 OS 문제인가 싶어 VirtualBox에 Ubuntu 14, 16도 설치해보고,

MariaDB Upgrade, Downgrade 도 해보고, 쿼리 사이에 Sleep 도 줘보고,

심지어 DB 연결 -> 쿼리 하나 전송 -> 연결해제 -> DB 연결 -> 쿼리 하나 전송 -> 연결 해제~~

이런 식으로도 테스트를 해 보았지만 위 증상은 여전했다.

 

♣ Error Log 체크

그러다 MariaDB 의 에러로그를 봤다.

[Warning] Aborted connection 16 to db: 'base_station' user: 'mesteam' host: '192.168.10.25' (Got an error reading communication packets).

 

혹시나 하고 위 error 내역으로 구글링을 진행하고 아래 사이트까지 가게 됨.

https://www.percona.com/blog/2016/05/16/mysql-got-an-error-reading-communication-packet-errors/

그야말로 이 이슈에 대해 할 수 있는 건 다 정리해 놓은 듯 했다.

그 중 tcpdump 를 떠 보라는 내용이 보여 MariaDB Server 에서 TCP Dump 를 실행하고 쿼리를 날려보았다.

 $ sudo tcpdump port 3306

 

♣ TCP Dump

그렇게, 양단이 쿼리와 ACK 를 다다다~ 주고 받다가, 위 증상이 나타났을 때 어~! 뭔가 이상함을 발견함.

14:16:57.598731 IP 192.168.10.25.51060 > 192.168.109.5.mysql: Flags [P.], seq 1860445:1860525, ack 3837097, win 251, length 80
14:16:57.598987 IP 192.168.109.5.mysql > 192.168.10.25.51060: Flags [P.], seq 3837097:3837262, ack 1860525, win 237, length 165
14:16:57.599944 IP 192.168.10.25.51060 > 192.168.109.5.mysql: Flags [P.], seq 1860525:1860605, ack 3837262, win 256, length 80
14:16:57.600200 IP 192.168.109.5.mysql > 192.168.10.25.51060: Flags [P.], seq 3837262:3837427, ack 1860605, win 237, length 165
14:17:49.661117 IP 192.168.109.5.mysql > 192.168.10.25.51060: Flags [P.], seq 9712582:9712747, ack 4709245, win 237, length 165
14:17:49.661515 IP 192.168.109.5.mysql > 192.168.253.200.51060: Flags [P.], seq 2639052253:2639052418, ack 1996360229, win 237, length 165
14:17:52.424828 IP 192.168.10.25.51060 > 192.168.109.5.mysql: Flags [P.], seq 4709165:4709245, ack 9712582, win 254, length 80
14:17:52.424854 IP 192.168.109.5.mysql > 192.168.10.25.51060: Flags [.], ack 4709245, win 237, options [nop,nop,sack 1 {4709165:4709245}], length 0
14:17:52.425088 IP 192.168.109.5.mysql > 192.168.253.200.51060: Flags [.], ack 1, win 237, options [nop,nop,sack 1 {4294967217:1}], length 0
14:17:56.205151 IP 192.168.109.5.mysql > 192.168.10.25.51060: Flags [P.], seq 9712582:9712747, ack 4709245, win 237, length 165
14:17:56.205610 IP 192.168.109.5.mysql > 192.168.253.200.51060: Flags [P.], seq 0:165, ack 1, win 237, length 165
14:18:02.025159 IP 192.168.10.25.51060 > 192.168.109.5.mysql: Flags [R.], seq 4709245, ack 9712582, win 0, length 0
 

192.168.109.5 : DB Server

192.168.10.25 : 회사에서 부여받은 내 IP -> 공유기에 세팅해서 사용함.

192.168.253.200 : 공유기에서 DHCP 로 할당한, 내 PC 의 IP.

 

즉 어느 시점에서 DB Server 가 공유기가 아닌, 내 PC 로 패킷을 날리기 시작한 것이다.

이것은, 공유기 문제?

 

그래서 공유기를 빼고 라인을 직접 내 PC 에 연결하여 테스트를 진행해 보았더니, 잘된다.

하아~~

 

공유기 설정문제인지, 공유기 자체 버그인지는 아직 모른다.

공유기를 다른 회사 제품으로 바꾸어 테스트해보니 이상없이 잘 돌아간다.

하~ 회사 이름을 밝힐 수도 없고... 일단 공유기를 교체하고 진행하자.

 

 

+ Recent posts