dolog
병목 현상 해결 : 데이터 베이스 연결 주의하기 본문
문제 상황
- cron.schedule 외부에서 한 connection 연결로 인해 매번 새로운 연결을 하다 보니 병목 현상이 발생했다.
이로 인해 요청 시 pending 상태가 길어지고, 심하면 timeout까지 가는 이슈가 생겼다.
문제 해결
- cron.schedule 내부로 connection 이동해서 연결 재사용으로 병목 현상 해결
const cronScheduler = async () => {
cron.schedule('*/5 * * * *', async () => {
// cron.schedule 내부에서 연결
const connection = await promisePool.getConnection();
const updateMarketDetailQuery =
'UPDATE Coin SET id=?, name=?, symbol=?, price=?, percent_change_24h=?, cmc_rank=? Where id=?';
try {
const marketDetail = await getCoinMarketCap();
for (const market of marketDetail) {
const { id, name, symbol, quote, cmc_rank } = market;
const { price, percent_change_24h } = quote['USD'];
await connection.query(updateMarketDetailQuery, [
id,
name,
symbol,
price,
percent_change_24h,
cmc_rank,
id,
]);
}
console.log('5분마다 실행 : All data changed!');
} catch (error) {
console.error(error);
} finally {
connection.release();
}
});
};
cronScheduler();
'톺아보기' 카테고리의 다른 글
wisecrypto, 효율을 높인 기술 도입 (0) | 2024.09.18 |
---|---|
vue.js의 option api 한 줄 요약 (0) | 2024.06.23 |
크롬(Chrome)은 들어봤는데 크론(Cron)이요? (0) | 2024.05.17 |
그동안 오해해서 미안하다! React Query (0) | 2024.05.13 |
비동기 처리 : callback에서 async, await으로 (0) | 2024.05.07 |