Google App Script
에서 Mysql에 연결해서 사용하는 부분이 있는데
Exception: Communications link failure
오류가 간헐적으로 발생했습니다.
원인을 찾아보니 connection이 중간에 끊긴 것이라고 합니다.
기존 Mysql은 8시간이라는 글들이 있어 다른 문제라 생각하고
autoReconnection과 ValidationQuery 옵션 등 다른 방법을 찾아봤지만 뚜렷한 해결책이 아니었습니다.
그러다,,, 아! 깨달은 게 있습니다.
제가 쓰고 있던 DB는 AWS RDS
에 올라간 MySQL이었습니다.
그리고 평소에 서버에선 Single Connection
이 아닌 ConnectionPool
을 쓰기 때문에 timeout을 매우 짧게 설정을 해놨었습니다.(10초)
아래 명령어를 통해서 확인 가능합니다.
show variables like '%timeout';
짧은 timeout 시간을 30초로 바꾸어줬습니다.
문제가 된 쿼리는 엑셀 정보를 받아오는데만 12~13초 가량이 걸려서 문제가 된 것이었고,
이게 간혹 10초를 넘지 않는 경우가 있어 에러가 간헐적으로 났었습니다.
timeout은 AWS
의 RDS
를 사용하는 경우 파라미터 그룹에서 변경을 해줘야 하고
아래 명령어를 통해 진행하거나 영구적인 적용을 위해서는 my.cnf
에서 설정해줘야 합니다.
set global interactive_timeout = [설정값];
set global wait_timeout = [설정값];
set session interactive_timeout = [설정값];
set session wait_timeout = [설정값];