공유기에 내 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 |
192.168.109.5 : DB Server
192.168.10.25 : 회사에서 부여받은 내 IP -> 공유기에 세팅해서 사용함.
192.168.253.200 : 공유기에서 DHCP 로 할당한, 내 PC 의 IP.
즉 어느 시점에서 DB Server 가 공유기가 아닌, 내 PC 로 패킷을 날리기 시작한 것이다.
이것은, 공유기 문제?
그래서 공유기를 빼고 라인을 직접 내 PC 에 연결하여 테스트를 진행해 보았더니, 잘된다.
하아~~
공유기 설정문제인지, 공유기 자체 버그인지는 아직 모른다.
공유기를 다른 회사 제품으로 바꾸어 테스트해보니 이상없이 잘 돌아간다.
하~ 회사 이름을 밝힐 수도 없고... 일단 공유기를 교체하고 진행하자.
'삽질미학 > Database' 카테고리의 다른 글
[MySQL] 간단한 파일을 Hex값으로 BLOB에 넣기 (0) | 2021.08.02 |
---|---|
SFTP를 이용한 Database Backup (0) | 2020.01.13 |
[MySQL] Alter 명령어 정리 (0) | 2019.08.13 |
Windows 에서 OpenSSH Server 설치하기 (0) | 2018.07.25 |