참고
https://lion-king.tistory.com/entry/MySQL-MariaDB-max-connections-Too-many-connections-%EC%98%A4%EB%A5%98-%ED%95%B4%EA%B2%B0
https://iamfreeman.tistory.com/entry/MySQL-%EC%8B%A4%ED%96%89%EC%A4%91%EC%9D%B8-%EC%BF%BC%EB%A6%AC-%ED%99%95%EC%9D%B8show-processlist-%EB%B0%8F-%EA%B0%95%EC%A0%9C%EC%A2%85%EB%A3%8Ckill-stop-%EB%B0%A9%EB%B2%95
테스트 환경을 다시 올렸는데 이번에는 DB 접속 과정에서 `too many connections`가 떴다. 일단 다른 팀원들이 DB를 다들 써야 되니까 docker restart를 했는데도 불구하고 다시 발생했다.
1. 임시방편
SHOW VARIABLES LIKE "%max_connections%";
max connection이 몇 개인지 확인 할 수 있다.
기본 값은 131이다.
SHOW VARIABLES LIKE "%timeout%";
SHOW VARIABLES LIKE "%thread%";
SHOW STATUS LIKE "%connect%";
SHOW PROCESSLIST
해당 mysql에서 실행되고 있는 쿼리들을 확인 할 수 있다.
SET GLOBAL MAX_CONNECTIONS = 300
일단 테스트 환경이여서 max connections를 131에서 300으로 올리고 나니까 정상동작하긴 했는데 원래 정석대로라면 max connections만 올리는게 아니라 추가적인 작업들을 해줘야한다. 이 처리는 임시 방편이다.
SELECT CONCAT('KILL ',id,';') FROM information\_schema.processlist WHERE USER='root' AND TIME > 200 INTO OUTFILE '/tmp/a.txt';
source /tmp/a.txt;
3분 정도 더 걸리고 있는 process들을 한번에 지우는 방법이다. 해당 select 문 실행 뒤 파일이 생성되면 해당 mysql이 올라가있는 서버에서 source 명령어를 통해 실행시켰다.
source
: 외부 파일에서 SQL문을 실행시키는 명령어
2. 커넥션 개수 설정
DB에서 커넥션 개수를 설정 할 수 있게 하는 방법이다.
하단 블로그 링크를 따라가서 진행했다. 설명을 자세하게 엄청 잘 해주셔서 잘 따라 할 수 있었다.
show variables like XXX
해당 블로그를 따라하고 이렇게 하면 되겠다, 해서 적용 후에 명령어를 실행해봤는데 잘 적용되지 않았다.
SET GLOBAL wait_timeout = 10800;
SET GLOBAL interactive_timeout = 10800;
아무리 명령어를 때려도 show variables로 확인해봤을 때는 동일했다.
해당 부분에 대해서 검색 하다 보니
SELECT @@global.wait_timeout, @@session.wait_timeout;
해당 쿼리를 날려보라고 하는 걸 봤고 wait_timeout
설정 값이 서로 다른 걸 확인해서 MySQL에 global, session 변수를 따로 설정 할 수 있다는 것을 알게 되었다.
global의 경우에는 전체 session 연결한 해당 세션에 대한 설정이다.
https://dev.mysql.com/doc/refman/8.0/en/show-variables.html
해당 문서를 참고 하면 내가 입력해 본 show variables time_out
의 경우에는 session 변수 임으로 global 변수를 셋팅한 경우에 다른 값을 확인 하게 되는 것이었다.
그래서 show global time_out
을 실행하면 잘 반영 된 걸 확인 할 수 있었고 session 변수에 대해서도 값을 변경해 주었다.
'DataBase' 카테고리의 다른 글
MongoDB 구조 개념 (샤딩, 샤드 클러스터, 레플리카셋) (0) | 2022.08.02 |
---|---|
[DB/Oracle] 오라클 계정 비밀번호 만료기간 해지 및 변경, 계정 락 해제 (0) | 2020.06.13 |
댓글