Choi의 고유결계

MongoDB - 커넥션 풀 (Connection Pool) 본문

DB/Mongo

MongoDB - 커넥션 풀 (Connection Pool)

믿을수없는맛 2019. 3. 2. 00:06
반응형

MongoDB - 커넥션 풀 (Connection Pool)

java로 웹어플리케이션을 제작하다보면 데이터베이스를 사용하게 된다. 이렇게 DB 공부를 하나보면 커넥션풀을 들어봤을것이다.

그럼 커넥션풀이 무엇이냐 뭐 몽고디비 커넥션풀을 찾으러 필자의 블로그에 들어온걸 보면 이미 어느 정도는 알겠지만 혹시 모르는 분을 위해

커넥션풀이란?

데이터 베이스에 많은 접속이 들어 올때 마다 커넥션 연결 객체를 만들어야하는데 그때 그때 마다 만들면, 응답하는 속도가 느려질것이다.
그렇기 때문에 미리 연결 객체를 만들어 미리 만들어준것을 나눠 주면 응답 속도가 빨라지지 않겠는가?

근데 그것을 여러분은 아는가?

몽고디비는 자체 내부적으로 만들어 사용한다고 한다. 그러니까 기본적으로 따로 설정 하지 않아도 그냥 생성만 하면 내부적으로 필요한 만큼 알아서 생성 한다. 하지만 연결 요청이 많거나 자신이 직접 설정하고 싶다면 밑에서 확인해보자

import com.mongodb.MongoClientOptions.Builder;

Builder options = new Builder();
    Builder options() 
    {
         options.connectionsPerHost(30); // 시작 시 30개의 커넥션을 만들어둔다
         options.minConnectionsPerHost(20); // 최소 10개를 유지한다
         return options;
    }

먼저 클라이언트 객체를 만들기전, 커넥션 풀을 만들때 필요한 설정값을 저장하기 위한 객체를 먼저 만들어준다.


//mongoClient = new MongoClient("localhost",27017);
MongoClientURI url = new MongoClientURI("mongodb://localhost:27017/plugliquid?maxPoolSize=200",options());
mongoClient = new MongoClient(url);

기존 데이터베이스의 주소와 포트 번호만을 이용해서 클라이언트 객체를 만들었지만.
방금전 만든 빌더 옵션을 주기 위해 MongoClientURI통해 url로 클라이언트 객체를 만들수있다.

URL작성 방법

mongodb://(DB 주소):(포트번호)/(데이터베이스 이름)?maxPoolSize=500”,options());

maxPoolSize=500 : 최대 만들수있는 풀 크기를 의미함으로 아무리 만들어도 500개 이상은 넘지 않을것이다.

mongo> db.serverStatus()
...
},
    "connections" : {
        "current" : 4,
        "available" : 999996,
        "totalCreated" : 60
    },
...

serverStatus()를이용해 current값을 확인해보면 값이 늘어난것을 확인 할수 있다. 

오늘 공부는 여기까지입니다.

공부에 도움을 위해 여러 글을 참고하여 작성한 글이며 오타, 피드백, 질문은 언제든지 환영합니다. 감사합니다


반응형
Comments