[DB] mysql 에서 외부 디비를 커넥션할 경우 접속 속도가 느려질때
특정 사이트에서 mysql 서버 접속이 엄청 느려졌다.
로컬 접속은 문제가 없는데 외부 mysql 쿼리만 유독 느리다면......
또 서버 리소스나 네트웍에는 크게 문제가 업다면.....
mysql> show processlist;
| 1233 | unauthenticated user | 10.1.0.100:49607 || Connect|| login |
| 1234 | unauthenticated user | 10.1.1.100:49608 || Connect|| login |
DB 연결 속도가 떨어지고, 웹페이지 접속이 느려지는 것 같습니다.
저게 왜 생기는 것인지 그리고 해결 방안은?
먼저 저런 증상에서 벗어 나시려면
mysql 구동시 --skip-name-resolve 옵션 넣어 주시던가
혹은 /etc/hosts 설정 파일에 접속 IP와 호스트명을 넣어 주시면 됩니다.
그럼 왜 저런 증상들이 나타나는 지 대략 말씀드리자면 mysql에서 접속시 ip에 대한 resolving을 하는데
대부분의 IP는 등록되어 있지 않습니다.
DNS서버가 느리다면 이 부분은 더욱 심각한 속도 문제가 발생하게 됩니다.
역질의를 하지 않는 방법과, DNS가 아닌 /etc/hosts파일에서 질의 하게 하게 하는 방법으로 풀어야합니다.
둘 중 빠른 방법은 DNS서버에게 역질의하지 않게 하는 방법입니다.
skip-name-resolve는 client 에서 server로 접속시에 DNS Lookup 과정을 생략해 주고,
localhost 로 접속하는 경우는 문제가 없지만 IP 로 접속하는 환경에서는 DNS 서버가 느리거나
아님 장애 발생시에 해당 옵션을 설정해 주므로써 DB 접속시에 문제점을 해결하실 수 있습니다.
결론은
1. DB서버에 /etc/host 파일을 변경해 주고 접속하기
#vi /etc/hosts
2. DB서버 재시작시 skip-name-resolve 옵션을 주고 재시작 함
#killall mysqld
#/usr/local/mysql/bin/mysqld_safe --skip-name-resolve &