반응형

Programming/Node.js 8

Connection Pool 사용 시 release() 코드 위치의 중요성

관리하고 있는 채팅 시스템이 있는데 데이터베이스 연결 시 Connection Pool을 사용하고 있습니다. 코드는 커넥션을 얻고, 데이터베이스 결과값을 가져온 후에 다시 커넥션을 반환하는 과정으로 작성되어 있습니다. 커넥션 반환 문제 그러던 중 커넥션 풀을 사용할 때 문제가 생겼습니다. 커넥션이 계속 증가하고 있었는데, 그러다보니 커넥션 수 제한에 걸려서 서버 오류가 발생하기도 했습니다. 이 문제를 해결하기 위해 pool 생성할 때 connectionLimit을 크게 올려보기도 했지만 채팅 서버에서는 오류가 나지 않지만, DB서버 과부하로 처리가 매우 느려졌습니다. 마찬가지로 max_connections, wait_timeout 도 변경했지만 사용량이 많을 때는 속도가 상당히 떨어졌습니다. 그래서 이런 ..

Programming/Node.js 2023.09.22

Node.js + express-session + db(MariaDB/MySQL) 연동 예제 :: 로그인 구현

1. 기본 시작 소스 안내 기본 소스는 branch::ex-auth 에서 시작하며, 완성된 소스는 branch::ex-auth-mysql 입니다. https://github.com/gogoma-code/node-express-auth.git node와 express-session을 활용하는 기본(branch::ex-auth가 만들어지는 과정)은 아래 글을 참고해 주세요. Node.js + express-session :: 프로젝트 생성부터 로그인 구현하기 2. MySQL 예제 테이블 생성 기본적으로 MySQL은 설치가 되어 있다는 가정 하에 진행합니다. SQL 예제 테이블 생성문 /* 만약 test 데이터베이스가 이미 있다면 다른 이름을 사용하세요. */ CREATE DATABASE `test`; USE..

Programming/Node.js 2022.07.11

Node.js + express-session 연동 예제 :: 프로젝트 생성부터 로그인 구현하기

Window 10 환경에서 node.js를 사용했습니다. npm init 부터 로그인 UI까지 만드는 과정을 기록합니다. 편의상 node로 프론트화면까지 구성합니다. 기본적으로 node는 설치가 되어 있다고 생각하고 진행합니다. 1. express-generator로 프로젝트 생성 원하는 경로에 새로운 디렉터리를 만들어요. 저는 node-express-auth 라는 이름으로 디렉터리를 하나 만들었요. 이제 경로 내에 들어가 express-generator로 node 기본 구조를 만들 거예요. express로 프로젝트 생성 $ express ex-auth -e --git 의존 패키지 설치 $ cd ex-auth $ npm install $ npm install bootstrap --save $ npm in..

Programming/Node.js 2022.07.07

Node.js :: express-generator 로 개발환경 세팅

1. express-generator란? 이제는 거의 정형화 되어 있는 프로젝트의 구성을 자동으로 생성해주고, 이 구성을 잡아줄 때 필요한 패키지를 package.json을 통해 제공하기 때문에 빠르게 노드 프로젝트 구성을 할 수 있습니다. 2. express-generator 전역에 설치하기 window라면 powershell을, linux 환경이면 터미널을 열어주세요. $ npm i -g express-generator expree-generator 패키지를 전역에 설치합니다. 전역에 설치하는 이유는 보통 단일 프로젝트에만 쓰는 게 아니라 각종 프로젝트를 만들 때 사용하기 때문입니다. 3. express로 프로젝트 생성하기 $ cd C:\expert\node-express-generator 우선 프로..

Programming/Node.js 2022.07.06

Node.js :: 버전 변경하기 / nvm 활용

node 버전을 downgrade 하여 사용해야 하는 경우가 생겼습니다. Window 환경에서 node.js 의 버전을 변경하는 방법을 기록합니다. 1. 현재 버전 확인 node가 설치되어 있지 않다면 바로 2번으로 넘어가세요. $ node -v v16.15.02. nvm 설치 nvm은 node version manager로 뜻 그대로 노드의 버전을 관리해주는 도구입니다. nvm 설치가 되어 있는 분은 패스해도 됩니다. 설치가 되어 있지 않으면 설치를 진행하세요. Releases · coreybutler/nvm-windows (github.com) 링크에 접속하셔서 하단의 Assets 에서 nvm-setup.zip 을 다운로드 합니다. 압축파일이 다운로드 될텐데 압축 해제 후 nvm-setup.exe 파..

Programming/Node.js 2022.06.27

Node.js :: Express 로 Cookie 올바르게 활용하기

이 예제에는 두 가지 패키지를 사용하고 있습니다. (cookie는 없어도 됩니다) express: 4.18.1 cookie: 0.5.0 기본 예제 틀 만들기 const express = require('express'); const app = express(); app.use(express.urlencoded({ extended: false })); app.get('/', (req, res) => { let html = ` `; res.send(html); }); app.post('/cookie', (req, res) => { res.send('cookie test!'); }); app.listen(3000, () => { console.log(&..

Programming/Node.js 2022.06.08

Node.js :: Express generator 로 프로젝트 생성 시 PM2 안 되는 오류

Node.js 에서 Express generator 로 프로젝트 기본 구조를 생성했을 경우 일반적으로 사용하는 PM2 사용법으로 서버가 실행되지 않을 수 있습니다. 저 역시 일반적으로 쓰던 것처럼 "PM2 start app.js" 를 했지만 실행이 되지 않았고, 해당 오류를 수정하는 과정을 기록합니다. 오류 & 오류 원인 > PM2 start app.js Express generator 로 프로젝트 기본 구조를 생성하면 app.js 로 서버를 실행하게 되면 list 화면에는 [status=online] 이지만 도메인을 입력하면 오류가 발생합니다. 이유는 생성된 구조를 보면 /bin/www 가 있을텐데, 실제로는 이곳에서 포트번호 및 서버를 세팅하는 역할을 합니다. 즉, 우리가 기존에 하던 서버 세팅의 역..

Programming/Node.js 2022.06.03

Node.js :: PM2 기본 간단 정리

PM2 를 활용하여 Node.js 서비스하기 추가 설명 없이 간단하게 정리한 것이므로 자세한 설명을 원한다면 가장 하단의 References 의 블로그를 참조하시기 바랍니다. PM2 설치하기 Node.js 가 설치되어 있다는 가정 하에 진행합니다. Node.js 의 패키지 매니저인 npm으로 PM2 를 설치합니다. > npm install pm2@latest -g https://pm2.keymetrics.io/ 예시 애플리케이션 파일 준비 var http = require('http'); var url = require('url'); var app = http.createServer(function(request,response){ var _url = request.url; ..

Programming/Node.js 2022.05.30
반응형