김보안의 블로깅
  • 🏠 Home
  • 📚 Project
    • Blockchain
      • 🎦 PickMe
      • 🎦 IoTC
      • 🎦 Blackchain
      • 📃 Gemology
      • 🎦 PickMe
      • 🎦 PickMe
    • AI
      • 👋 A.I. Dream Reader
      • 🎦 A.I. Dream Reader
    • Security
      • 🎦 SNAC
    • Education
      • 🎦 Smart Lecture
  • 🤸‍♂ Hobby
    • Music
      • Violin
      • Guitar
      • Piano
      • Drum
    • Flower
      • Flower Certificate
    • Sport
      • Ski
      • Skateboard
      • Golf
      • Boxing

2013년 6월 18일 화요일

[Node.js] DB Pool ( mysql-simple-pool )

 SecureKim     오전 12:07     다운, 서버, 연결, 오래놔두면 꺼지는 현상, 오래됨, 커넥션, connection, mysql, Node.js, pool, server     2 comments   

Node.js 서버가 오래 켜놓으면 꺼질 때



처음에는 노드 서버가 켜질 때 Mysql DB서버에 Connection을 맺고

계속 쿼리를 날렸었는데 , 오랫동안 서버가 켜져 있다 보니까

Connection이 끊어지면서 서버가 다운되는 현상이 있었습니다.

그래서 사전에 일정량의 Connection 객체를 만들어 모아두고,

사용이 끝난 Connection 객체를 나중에 다시 재사용 가능하도록 하는 Connection Pool을 이용해

속도도 향상시키고 서버가 다운되지도 않도록 해보았습니다.

아 , 물론 사용전에 npm install mysql-simple-pool 로 모듈을 다운 받아야 합니다.

Node로 mysql-simple-pool 사용하기

var Pool = require('mysql-simple-pool');
var pool= new Pool( 200,{  //최대 200 개의 연결.
 host:       "호스트주소",
 port:       "MySQL 포트. 기본 3306",
 user:       "MySQL 계정",
 password:   "MySQL 패스워드",
 database:   "접근 할 데이터베이스" 
});


//Query 날리기. write라는 테이블중 id가 data.id 인 것의 
//x,y 값을 data.x , data.y 로 바꿈.

pool.query('UPDATE `write` set x=? , y=? WHERE id=?',
[data.x, data.y , data.id], function (err,rows){
if(err!=null) console.log(err); //err있으면 출력.
});



최대 200개의 연결을 한다고 Pool을 생성 하더라도 , 실제 커넥션은 3~6개만 생기는데,

커넥션을 계속 생성 하는 것이 아니라 적은 개수를 라운드 로빈 스타일로 돌려서

처리 하는 것 같습니다.


사실 쿼리를 자주 날려야 하기 때문에, 지금은 누군가 쿼리를 한번 하면,

노드 서버에서 객체의 멤버로 저장 하고있다가

다음 사람이 쿼리를 원하면 DB에 쿼리하지 않고 변수를 바로 돌려주도록 하였습니다.

-> 지금은 또 수정되어서, Mysql에서 쿼리한 결과를 In-Memory DB 인 Redis에 넣어놓고,

또 요청할 경우 Mysql 이 아닌 Redis에서 가져다 씁니다.



언젠가 Mysql 과 Redis의 장점만이 합쳐진 DB가 나오길 바랍니다..


  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
이메일로 전송BlogThis!X에 공유Facebook에서 공유
최근 게시물 이전 게시물 홈

댓글 2개:

  1. kenya2013년 9월 26일 오전 12:47

    mysql때문에 서버가 다운되서 고생했는데.. 감사합니당 ㅋㅋ

    답글삭제
    답글
    1. SecureKim2013년 9월 29일 오전 2:51

      도움이 되셨다니 다행이네요 ㅎ

      삭제
      답글
        답글
    2. 답글
댓글 추가
더 로드하기...

페이지

  • 홈
  • Hobby

Categories

  • AI
  • AWS
  • Blockchain
  • Hardware
  • Javascript
  • Node.js
  • Plasma
  • Security
  • Study
  • Video
  • android
  • mysql
  • review
  • windows

Popular Posts

  • 블랙보드 강의 녹화 영상 다운로드 가능한 방법 (노설치)
    별도의 설치도 필요 없고 아주 쉽습니다. 구글 크롬브라우저 에서 블랙보드 녹화 영상에  다운로드 가능한 메뉴가 나오게 하는 코드입니다.  먼저 블랙보드 강의자료에 입장하고, 재생 버튼을 클릭 하지 않은 상태로 F12 를 입력합니다. 재생을 클릭하지 마...
  • 다빈치리졸브로 영상의 음성 보정 (잡음 노이즈 없애기)
      잡음 없애는 방법 1. 음악 쪽 들어가서 음악에서 소스 우클릭 - Normalize Audio Levels 2. 우측의 Mixer에서 Dynamics 더블클릭, Effects아래 +누르고 Metering에 Meter 그럼 아래처럼 나오는데  Gat...
  • 회사 프록시와 인증서에 고통받는 그대를 위한 글 (Bash, Gradle, Python, wget, nodejs(npm), apt-get, cURL, git, yarn, androidStudio)
    대기업에 입사하면 장단점이 있는데, 단점 중에 하나가 회사에서 프록시를 사용하여 트래픽 감시를 하므로 프록시 설정을 해주어야 한다는 점 입니다. 특히, 회사에서는 https 트래픽도 감시를 하므로 인증서도 설정해 주어야 합니다. 그런데 문...

Blog Archive

  • ►  2024 (2)
    • ►  11월 (2)
  • ►  2023 (2)
    • ►  10월 (1)
    • ►  1월 (1)
  • ►  2022 (10)
    • ►  12월 (1)
    • ►  11월 (3)
    • ►  9월 (1)
    • ►  8월 (1)
    • ►  6월 (2)
    • ►  3월 (2)
  • ►  2021 (9)
    • ►  12월 (3)
    • ►  11월 (1)
    • ►  6월 (1)
    • ►  5월 (2)
    • ►  4월 (2)
  • ►  2020 (12)
    • ►  10월 (1)
    • ►  9월 (2)
    • ►  7월 (1)
    • ►  6월 (1)
    • ►  5월 (5)
    • ►  4월 (1)
    • ►  2월 (1)
  • ►  2019 (14)
    • ►  10월 (2)
    • ►  7월 (1)
    • ►  3월 (4)
    • ►  2월 (2)
    • ►  1월 (5)
  • ►  2018 (14)
    • ►  12월 (2)
    • ►  11월 (4)
    • ►  10월 (1)
    • ►  8월 (2)
    • ►  5월 (4)
    • ►  1월 (1)
  • ►  2017 (12)
    • ►  10월 (2)
    • ►  9월 (9)
    • ►  5월 (1)
  • ►  2016 (8)
    • ►  10월 (2)
    • ►  8월 (1)
    • ►  6월 (1)
    • ►  1월 (4)
  • ►  2015 (6)
    • ►  12월 (3)
    • ►  10월 (1)
    • ►  6월 (1)
    • ►  5월 (1)
  • ►  2014 (10)
    • ►  11월 (1)
    • ►  9월 (1)
    • ►  7월 (1)
    • ►  6월 (1)
    • ►  5월 (3)
    • ►  4월 (1)
    • ►  3월 (2)
  • ▼  2013 (28)
    • ►  12월 (3)
    • ►  11월 (6)
    • ►  10월 (6)
    • ►  9월 (6)
    • ►  8월 (1)
    • ►  7월 (3)
    • ▼  6월 (3)
      • [Node.js] Redis 의 hmset
      • [Node.js] DB Pool ( mysql-simple-pool )
      • 안드로이드 음성 소켓 통신 (2월 단기)

구독

글
Atom
글
댓글
Atom
댓글

로드 중입니다...

각오

직접 해보지 않은 것은 포스팅 하지 않겠습니다.

Copyright © 김보안의 블로깅 | Powered by Blogger
Design by Hardeep Asrani | Blogger Theme by NewBloggerThemes.com | Distributed By Gooyaabi Templates