본문 바로가기
서버/Mysql

mysql 연결 해제 방지 ping 체크

by 코딩히어로 2022. 6. 1.
728x90

리눅스에서 mysql을 사용할 때에는 한 가지 주의해야 할 점이 있는데

mysql에서는 일정시간동안 접근이 없으면 자동으로 connection을 해제합니다

이는 mysql 기능으로 불필요한 리소스를 방지하기 위한 것으로 보입니다

 

그래서 간혹가다가 서버와의 통신이 없는 리눅스 Application의 경우에는

mysql이 초기에 연결되어 있었지만 오랜 시간 접근하지 않은 상태로 인하여

connection이 해제되고 결국 Application에서는 mysql에 접근을 할 수 없는 상황에 직면합니다

 

이렇게 접근하지 않을 경우 해제되는 시간은 Default 6시간으로 되어 있기 때문에

mysql을 활용한 Application 개발 시에는 이 부분을 염두에 두어야 합니다

 

이러한 문제를 해결 할 수 있는 가장 간단한 방법이 있는데

mysql에 주기적으로 Ping을 체크해주어 연결이 해제되는 상황을 방지할 수 있습니다

 

iPingCheck++;
if(iPingCheck>10){
        if(mysql_ping(&conn)){
                connection = mysql_real_connect(&conn, DF_DB_HOST, DF_DB_USER, DF_DB_PASS, DF_DB_NAME, 3306, (char*)NULL,0);
        }
        iPingCheck=0;
        printf("DB Ping Check\n");
}

 

해당 코드는 1초마다 주기적으로 실행되는 루프안에 구현되었습니다

 

즉 iPingCheck가 ++될때 마다 1초가 지났다는 뜻이기 때문에 mysql ping check는 10초마다

한 번씩 해주고 이러한 ping이 실패할 경우 어떠한 이유에서든

연결이 해제되었다는 뜻이기 때문에 mysql_real_connect를 통해서 다시 연결을 유지하도록 합니다

 

mysql을 응용하는 리눅스 Application의 경우 위 코드만 추가해주면

mysql 연결이 끊어져서 애를 먹을 일은 없습니다

728x90
반응형

댓글