본문 바로가기
Debug

[MySQL] MySQL server has gone away

by 또버깅 2022. 11. 28.
반응형

mysql에서 db연결이 실패하고 이런 로그를 보신 적 있으실 겁니다.

(2006, "MySQL server has gone away (ConnectionResetError(104, 'Connection reset by peer'))")


이 로그가 뜨는 경우는 

1.MySQL과 연결에 오류가 있는 경우

2. 패킷 전송에 문제가 있는 경우

3. 이전 연결 세션에 영향을 받은 경우

 


 

이렇게 세 가지 경우가 있는데 저의 경우는 2번째 문제였습니다.

저는 용량이 큰 쿼리를 mysql에 보내는 상황이었고, 

전송 패킷의 용량이 너무 큰 바람에 생긴 오류였습니다.


 

해결책은 max_allowed_packet의 크기를 바꿔주는 것이었고,

직접 my.cnf파일을 찾아가 [mysqld] 항목에서 바꿔주면 됩니다. 최대 변경 가능 크기는 1GB이고, 너무 크게 설정할 시 메모리 사용에 무리가 갈 수 있으니 주의하시길 바랍니다.

표현식은 MB기준으로 32MB로 설정하고 싶을 땐 max_allowed_packet = 32*1024*1024의 형식으로 작성해 주면 됩니다.

(물론 곱한 값을 그대로 적어주셔도 됩니다.)  설정 완료하셨으면 mysql을 재시작해주셔야 적용됩니다!!(필수)

 


 

위 방법은 파일에서 직접 수정하는 방법이고,

바로 쿼리로 설정하는 방법은

set global max_allowed_packet=32*1024*1024; 로 설정해주고 창을 다시 닫았다가 켜주면 됩니다.

제대로 적용됐는지 확인 여부를 위해

show variables where Variable_name = 'max_allowed_packet'; 쿼리를 날려 확인해 주시면 되겠습니다.

 


 

모두 오류 해결하시길 바랍니다.

감사합니다.

 

 

 

 

 

 

 

반응형

댓글