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
반응형
'서버 > Mysql' 카테고리의 다른 글
[Mysql] Restore Workspace 에러 해결 (2) | 2022.10.27 |
---|---|
[Mysql] Attempted to open a previously opened tablespace 에러 해결 (4) | 2022.07.18 |
Mysql Slow Query log (부하 관리) (3) | 2022.05.11 |
Insert ignore 중복 레코드 관리 (5) | 2022.05.10 |
Mysql 패스워드 암호화 및 복호화 (6) | 2022.04.12 |
댓글