운영 중인 서비스에서 황당한 사건이 한번씩 발생했습니다.
mysql 에서 max_packet 으로 인한 오류인데요.
com.mysql.jdbc.PacketTooBigException: Packet for query is too large (2064 > 1024). You can change this value on the server by setting the max_allowed_packet’ variable.
위 처럼 발생했습니다.
위 내용은 설정 변수 중 max_allowed_packet 값이 너무 작아서 발생하는 것이라 수정하고 my.cnf 에도 적용을 했는데요. (재기동도 했어요)
그런데!!! 어느 순간 사이즈가 자꾸 변하면서 저 오류가 또 발생을 합니다.
이런 말도 안되는 경우가 어이 없게도 뭔가 다량의 처리를 할 때 발생해서 착오를 일으켰습니다.
애꿎은 기능만 계속 확인하고 도대체 이럴수가 있는 것인가 구글링을 해도 잘 나오지 않고.. 그러나 나왔습니다.
http://stackoverflow.com/questions/28979660/why-mysql-max-allowed-packet-reset-to-1m-automatically
위 링크가 저와 동일한 현상으로 인해 발생한 내용이었습니다.
저도 바로 general_log 를 활성화 시키고 로그를 확인했습니다.
오오오오오 나왔어요~ 보안이 미흡했네요.
바로 방화벽,포트,아이피차단,비밀번호변경,계정권한 변경 등 보안 처리를 변경했습니다.
이제야 좀 조용한 상황이네요.
저와 같은 경우를 겪으신 분들은 위 내용을 확인해주세요.
max_allowed_packet 을 검색하면 대부분 설정에 관한 내용이 나옵니다. (변경 방법은 검색으로 확인됩니다.)
설정을 했는데도 문제가 발생한다면 위 내용을 체크하시면 됩니다.
저도 동일하게 max_allowed_packet 가 초기화되는 문제점을 가지고 있습니다. general_log를 어떻게 설정하여 확인이 가능한지 궁급합니다!!
뒤늦게 답글을 남깁니다.
general_log 에 대해서 특별히 설정한 것은 없고 http://blog.plura.io/?p=4493 에서 확인하시면 설정을 할 수 있습니다.
그러면 특정 위치에 파일로 로그가 축적됩니다.
제 경우는 로그 설정 후 해당 로그파일을 확인해보니 외부에서 해당 값을 변경하는 등 시도가 있었던 것으로 확인되어서 보안 부분을 강화하였습니다.
로그를 보면 실행한 쿼리들이 나오니까 해당 내용을 보고 상황에 맞춰서 대응하시면 될 것 같습니다.