TIL

23/11/12 TIL __ [SequelizeConnectionError]: Too many connections 에러 aws rds 에러

GABOJOK 2023. 11. 12. 23:01

 

 

에러그만!!!!!😠

이라고 외치고 싶었다...

어제부터 계속해서 오늘 점심까지는 계속해서 에러만 만나고 있었다...

 

이정도면 내 코드가 매우 문제가 있는것 같은데,

비교해 보면 강의의 예제 코드와 동일하다. 

 

수많은 에러들 중 복잡했던  [SequelizeConnectionError]: Too many connections 에러에 대해 다뤄보려 한다. 

 

 

 

 

🚌    상황

회원가입 기능 테스트 하면서 테이블에 데이터가 너무 많아져 보기 힘들었다.

시퀄라이즈 페이지에 가보니 delete 쿼리 메소드가 있어서

시도해 봤다.

 

조건 하나하나 귀찮게 하고 싶지 않아서

아래의 메소드로 진행했는데,

문제가 시작되었다. 

 

 

 

 

🚨에러🚨

 

어떤 명령을 해도, 아래의 🚨에러🚨가 발생했다.

Executing (default): SELECT `id`, `name`, `email`, `password`, `createdAt`, `updatedAt` FROM `UsersData` AS `UsersData`;

 

 

스텍오버플로우에 검색해 보니, 

 

config.json 파일에 "logging" : false 를 추가.

 

하라는 제안이 있어서 시도해 봤다.

다행이 바로 해당 에러는 사라졌다. !

 

 

 

 

 

그리고 다시 테이블을 보기 위해 create 요청 후 findeAll 메소드를 실행시켰다.

 

 

🚨에러🚨

throw new SequelizeErrors.ConnectionError(err); ConnectionError [SequelizeConnectionError]: Too many connections

 

 

테이블을 보려고 클릭해 봐도, 

[Start] Executing MySQL query... 

이 메세지만 떠있고, [Done] 처리가 되지 않았다.

왜 안되는 걸까. 연거푸 눌러봐도 작동하지 않았다. 

그리고 갑자기 이 에러가 나타났다.. 

 

 

 

 

🤝 해결 방법 🤝

검색결과 wait_timeout과, interactive_timeout을 만지면 해결 되는듯 했다.

 

일단 sql에 접속을 해야했다. 

mysql -u root -p

 

 

그리고 해당 값들을 볼수 있도록 아래 명령어를 입력했다. 

show variables like "%max_connections%";

 

그럼 이렇게 나온다. 
+------------------------+-------+
| Variable_name                  | Value |
+------------------------+-------+
| max_connections                | 151   |
| mysqlx_max_connections | 100   |
+------------------------+-------+

- max_connections: 최대 접속수
- 기본값은 151이다!

 

 

이제 아래의 명령어를 터미널에 입력해 timeout 값을 봐보자.

show variables like '%timeout';

 

 

그럼 이렇게 나온다.
+-----------------------------------+----------+
| Variable_name                                       | Value    |
+-----------------------------------+----------+
| connect_timeout                                   | 10       |
| delayed_insert_timeout                       | 300      |
| have_statement_timeout                     | YES      |
| innodb_flush_log_at_timeout             | 1        |
| innodb_lock_wait_timeout                  | 50       |
| innodb_rollback_on_timeout              | OFF      |
| interactive_timeout                              | 28800      |
| lock_wait_timeout                                | 31536000 |
| mysqlx_connect_timeout                    | 30       |
| mysqlx_idle_worker_thread_timeout | 60       |
| mysqlx_interactive_timeout                | 28800    |
| mysqlx_port_open_timeout                | 0        |
| mysqlx_read_timeout                          | 30       |
| mysqlx_wait_timeout                           | 28800    |
| mysqlx_write_timeout                          | 60       |
| net_read_timeout                                 | 30       |
| net_write_timeout                                | 60       |
| replica_net_timeout                             | 60       |
| rpl_stop_replica_timeout                    | 31536000 |
| rpl_stop_slave_timeout                      | 31536000 |
| slave_net_timeout                               | 60       |
| ssl_session_cache_timeout               | 300      |
| wait_timeout                                        | 28800      |
+-----------------------------------+----------+

 

 

 

 

뭔가가 매우 많고 복잡해 보이지만, 일단은 wait_timeout과,  interactive_timeout  의 값에만 집중하기로 했다.

해보고 안되면 다시 보면 되니깐, 마음을 가라앉히고 다시 봤다.

 

해당 값을 바꿔주려면, 

set interactive_timeout = 180;
set wait_timeout = 180;

 

이런식으로 바꿔주면 된다.

여기서 저 숫자는 초단위 시간 값이며,

시간을 짧게 해줘서, 안쓰는 애들, 필요없는 애들은 빠르게 해제시켜주는 역할을 해주기 위해

시간을 줄여 적어주었다.

 

 

그리고 혹시 몰라서 아래의 명령어로 한번더 입력해 주었다.

set global interactive_timeout = 180;
set global wait_timeout = 180;

 

 

 

그리고 나서 다시 

 show variables like '%timeout'; 

명령어를 통해 확인 

 

 

 

혹시나 바뀌지 않았다면, 터미널에서

 brew services restart mysql

 

명령어를 통해 재시작 한 뒤에 다시 시도해 보길 바란다. 

 

그리고  다시 회원 가입요청 보내니까 해당 에러 해결 되었다.

 

 

 

 

 

 

 

참고한 블로그

https://velog.io/@kimjiwonpg98/mysql-too-many-connections-error-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95
https://sweetysnail1011.tistory.com/70
https://sys970717.tistory.com/13