GOOD4ME
MySQL Too many connections Error 본문
반응형
Docker 컨테이너 기반으로
FastAPI와 Hive 컨테이너가 구축되어져있다.
Hive Metastore로 MySQL을 채택한 상황이며,
FastAPI에서 Hive에 연결하여
데이터의 CRUD가 활발히 이루어지는데,
실수로 연결을 종료하지 않는다면 어떤 일이 발생할까❓
MySQL Too many connections Error
구글링하면 이미 수 많은 솔루션이 많이 나와있다.
대부분이 MySQL에 접속하여 연결 수의 제한(max_connections) 을 수정하라고 한다.
그러나 필자는 보통의 솔루션처럼은 해결할 수 없었다.
상기의 방법을 사용하려면,
최소 한 번은 MySQL에 접속해서 환경설정을 적용해야하는데,
아니 애초에 접속이 안되는데 뭘 어떻게 접속을 하라는건가❓❓
심지어 MySQL 버전별로 my.cnf의 key-val 세트가 달랐고
이 때문에 문제를 해결함에 있어 난관이 됬었다.
MySQL 접속 및 환경설정 없이 문제 해결 방법
...
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source rejected establishment of connection, message from server: "Too many connections"
...
상기의 문제는 Hive를 실행하면 확인할 수 있었던 오류 화면이다.
원인은 Hive의 Metastore인 MySQL을 조회하는 모듈이 있었는데,
모듈을 사용하고 커넥션을 닫지 않은 것이 화근이었거나,
Hive의 재접속이 잦아 발생한 문제일 것이라는 것이 내 추측이다. 정확한 이유를 아신다면 댓글 부탁드립니다.😁
문제 해결 방법은 매우 심플했다.
my.cnf에 추가해야할 내용은 구글링을 통해 알 수 있을테니 생략하겠다.😎 THUG LIFE😎😎😎😎
# 1. service MySQL restart
$ service mysql restart
* Stopping MySQL database server mysqld [fail]
* Starting MySQL database server mysqld [ OK ]
# 상단처럼 "[fail]"이 뜨면 수정한 my.cnf 파일이 제대로 반영되지 않은 것❗❗
# MySQL 버전을 확인하고, 해당 버전에서 사용할 수 없는
# key-val 세트를 사용했는지 다시 한 번 확인하고 다음 단계로 고고❗
##########################################################################
# 2. MySQL 프로세스 강제 종료
$ ps aux | grep mysql | grep -v grep
# 상단의 커맨드 실행 결과, "/usr/sbin/mysqld --basedir~" 이라고 뜨는
# 프로세스 번호 찾아서 강제 종료❗❗
$ kill -9 [mysqld pid]
##########################################################################
# 3. service MySQL start
$ service mysql start
* Starting MySQL database server mysqld [ OK ]
# 일단 MySQL 서비스를 강제 종료한 후, 재시작이 됨
##########################################################################
# 4. Apache Hive 접속
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/hive/lib/slf4j-log4j12-1.7.30.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.30.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
Hive Session ID = ac4dd78d-818c-4033-8fef-51c1594d63dc
Logging initialized using configuration in jar:file:/opt/hive/lib/hive-common-3.1.2.jar!/hive-log4j2.properties Async: true
Hive Session ID = 5a25d539-0a84-4658-bb5d-ec719c9f7187
hive>
반응형
Comments