Cloudera CDH/CDP 및 Hadoop EcoSystem, Semantic IoT등의 개발/운영 기술을 정리합니다. gooper@gooper.com로 문의 주세요.
*출처 : http://www.jnetwork.co.kr/bbs/board.php?bo_table=useguide&wr_id=194&sca=&page=3
특정 사이트에서 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
168.126.63.1 www1 www1.jnetwork.co.kr localhost
2. DB서버 재시작시 skip-name-resolve 옵션을 주고 재시작 함
#killall mysqld
#/usr/local/mysql/bin/mysqld_safe --skip-name-resolve &
* 우분투 16.04 LTS에서 MariaDB는 아래와 같이 실행시켜준다.
#killall mysqld
#root@gsda3:/root# /usr/sbin/mysqld --skip-name-resolve &
3. /etc/mysql/my.cnf를 수정하여 영구적으로 반영한다.(2번 혹은 3번준에 한개만 실행할 것)
vi /etc/mysql/my.cnf
[mysqld]의 끝에 skip-name-resolve를 추가해준다.
그리고 service mysqld restart를 수행하여 변경사항을 반영한다.