본문 바로가기
MySQL

MySQL connection is hanging on login state ( processlist )

by nomore7 2015. 1. 21.



DB 처리 속도가 전체적으로 저하가 발생하여, 확인해 보니,


DB Connection을 가져오는 부분에서 지연이 발생 하였다.


MySQL쪽에서  processlist를 갱신하여 체크해본 결과


mysqladmin processlist -i 1


state 가 login 인 상태로 몇초간 지속된 후, query 상태로 넘어갔다.


문제는 MySQL에서 연결을 수립하는 호스트를 확인하지 못하여 지연이 발생하는 것이였다.


해결을 위해 /etc/host에 해당 호스트를 추가했다.


지연이 해결 됬다.


사실 DNS가 정상적으로 설정되어 있다면, 이러한 작업을 거치지 않아도 되지만,


해당 서버의 MySQL이 오동작을 하는 것으로 보인다.


해결 방법


1. host파일에 해당 호스트를 입력 ( 문제점은 접속하려는 호스트가 일정지 않을 때, 수동으로 입력하기에 무리가 있음)


2. my.cnf에서 skip-name-resolve 설정을 추가하여 hostname lookup 을 스킵하도록 한다.


사실 위 두가지 방법은 DNS에 문제가 있다는 가정이다.


일반적인 상황에서도 약간의 성능개선은 있다. 두 경우 모두 lookup을 하지 않으므로..


하지만 이번 경우는 DNS가 정상적인 경우였지만 문제가 발생했다.



http://serverfault.com/questions/231411/mysql-connections-hanging-in-login-state



이 질문을 올린 사람과 유사한 경우로 보인다.


 replication 된 mysql 이 깨진적이 있었는데, 그와 관련이 있는 것으로 보인다.