Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- null 병합 연산자
- transit gateway
- DynamoDB
- Site-to-Site VPN
- api gateway
- prometheus
- 비구조화 할당
- Await
- vgw
- AWS
- grafana
- 단축 평가
- cognito
- 구조분해 할당
- optional chaining
- Service
- Kubernetes
- CloudFormation
- 옵셔널 체이닝
- VPC
- Custom Resource
- Proxy Resource
- 자바스크립트
- Endpoints
- JavaScript
- docker
- docker swarm
- 온프레미스
- elasticsearch
- On-Premise
Archives
- Today
- Total
만자의 개발일지
[Node.js] MySQL 쿼리 전송 안되는 문제 해결 방법(feat. Connection Pool ) 본문
개요
개인적으로 프로젝트를 진행하던게 있었는데, 이상하게 서버로 5~8번 이상 요청을 보내면 데이터는 가는데 DB로 쿼리가 안보내지는 현상이 일어났다. 그래서 코드를 하나하나 뜯어보면서 곰곰히 생각해보니 DB에 쿼리를 보낼 때 마다 Connection을 가져오는데, 요청을 다 보낸후에 Connection을 Pool에다 반납하지 않고 계속 가지고 있어서 생긴 문제였다.
그래서 Connection Pool이 뭔데?
DB에 연결할 수 있는 Connection을 미리 만들어 Pool이라는 공간에 저장해두었다가 필요할 때 Connection을 가져다 쓴 후, 다시 Pool에다가 반납하는 개념이다.
근데 반납을 안했다
해결 방법
기존에 다음과 같이 사용하고 있었다.
함수를 호출하면 Connection을 가져다 쓰고 반납을 하지 않는 구조로 구현했었다.
const mysql = require('mysql')
var pool = mysql.createPool({
host: 'host',
user: 'user',
password: 'password',
database: 'database'
})
function executeQuery(sql, objects=[]) {
pool.getConnection((err, connection) => {
if(err)
throw err
connection.query(sql, objects,
(error) => {
if (error)
throw error
})
})
}
그래서 connectionLimit도 50으로 늘려주고 무엇보다도 connection.release() 함수를 호출하여 Pool에다 Connection을 반납해주도록 바꿨다.
const mysql = require('mysql')
mysql.createPool({
host: 'host',
user: 'user',
password: 'password',
database: 'database',
connectionLimit: 50
})
function executeQuery(sql, objects=[]) {
pool.getConnection((err, connection) => {
if(err)
throw err
connection.query(sql, objects,
(error) => {
if (error)
throw error
})
connection.release()
})
}
참고
'Node.js' 카테고리의 다른 글
[Node.js] nodemon 사용법 (0) | 2022.03.31 |
---|---|
[Node.js] 프로덕션 환경에 해당하는 의존성만 설치하는 방법 (0) | 2022.03.30 |
[Node.js] Warning: To load an ES module 에러 해결방법 (0) | 2021.09.06 |
[Node.js] http 모듈로 서버 만들기 (0) | 2021.06.03 |
[Node.js] MySQL 접속 에러 해결 방법 (Error: ER_ACCESS_DENIED_ERROR: Access denied for user ''@'localhost' (using password: NO)) (0) | 2021.05.27 |
Comments