MySQL wait_timeout 버그 (L4 CLOSE_WAIT, FIN_WAIT2) – MariaDB 전환

JDBC – HAproxy – MySQL

서버를 사용하다가 MySQL을 MariaDB로 전환을 하면서 문제가 생겼다.

wait_timeout 값이 지나면 HAproxy 서버에 CLOSE_WAIT와 FIN_WAIT2 상태가 늘어나면서 connection fail이 발생하는 현상이 생긴것이다.

 

결과적으로는 MariaDB의 wait_timeout 값을 JDBC timeout 값보다 많게 설정을 해서 해결을 했다.

 

이 문제가 생긴것은 MySQL의 특정 버젼에서 wait_timeout 설정을 제대로 처리하지 못하는 버그가 있었기 때문이었다.

문제가 생긴 서버의 사용하던 MySQL은 5.5.23 이었다.

 

해당 문제를 찾다가 아래 글을 찾았다.

http://worklog.askmonty.org/worklog/Server-BackLog/?tid=246

내용중에 아래와 같은 내용이 있는것을 확인을 했다.

wait_timeout does not work with MySQL Enterprise threadpool.

 

MySQL 버그내용을 찾아보니 5.5.28 버젼부터 해결이 된 내용이었다.

http://forums.mysql.com/read.php?3,569838,569838

 

L4 네트워크를 사용할때 컨넥션 세션에 종료에 대한 설정도 확인을 해야 한다.

일반적으로 JDBC에서 먼저 세션을 종료하면 정상적으로 세션이 끊기지만, 이번 경우는 MariaDB의 wait_timeout 값이 JDBC쪽의 설정보다 적어서 MariaDB에서 먼저 세션을 종료하다 보니 L4에서 세션을 유지하고 있었던 것이다.

Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중