DB connection pool HikariCP (Tomcat & MySQL)

2014. 5. 27. 10:22프로그래밍/Java

728x90
반응형

 HikariCP

DB connection pool HikariCP (Tomcat & MySQL)

현재 모바일게임 및 모바일 앱 서비스를 위해서 서버 쪽에서는 Tomcat을 이용하고 DB로는 MySQL을 이용하고 있습니다.

여러가지 사정으로 인해서 윈도우 대신 리눅스를 선택하고 되었지만..핵심 구성원의 능력에 따라서 가장 잘할수 있는 SW를 선택하게 되면서 방향이 정해진 것으로 기억됩니다. 그리고 이게 쉽게 변경되지는 않을것으로 생각됩니다.


웹 서비스도 마찬가지 이지만 모바일 서비스에서도 Tomcat과 MySQL의 Connection Pool을 어떻게 처리할것인가를 가지고 고민을 많이 했습니다. 다양한 방법을 시도하다가 BoneCP가 속도가 빠르다는 말을 듣고 적용을 고려했지만 좀더 사용하기 편하고 관리도 편하게 없을가 고민하다가 HikariCP를 적용해보기로 하였습니다. 


누가 뭐라고 해도 Connection Pool을 사용하시는 분들의 가장 큰 관심사는 안정성과 속도가 아닐가 싶습니다.

프로그래밍 난이도는 대부분 거기서 거기라 생각이듭니다. 또한 사용하시는 환경에 따라서 변수가 많은게 사실이조.

HikariCP는 생각보다 적용은 쉽게 해결되었고 BoneCP보다는 그리고 현재 사용되는 CP들에 비해서 속도가 향상되었다고 하네요..이부분은 사용해보면서 어느정도를 지원할수 있는지 확인이 필요한 부분입니다.


다음 그래프는 BoneCP를 사용하다 HikariCP로 넘어가는 시점에서 확실히 안정적인 연결을 유지하면서 최소의 연결만으로 운영이 되고 있는 것으로 보여주고 있습니다.

[출처 : https://github.com/brettwooldridge/HikariCP]


다음은 사용예입니다.

iniDBPool()함수를 한번 호출하고 getConnection()을 통해서 연결을 받아서 사용후에 되돌려 주면 됩니다.

  static HikariDataSource datasource = null;


  static String jdbcURL = "jdbc:mysql://localhost:3306/appsus?characterEncoding=utf8";

  static String dataSourceClassName = "com.mysql.jdbc.jdbc2.optional.MysqlDataSource";

  static String username = "user_id";

  static String password = "user_pw";

  static int initialSize = 5;

  static int maxActive = 5;


public static void iniDBPool()

{  

HikariConfig config = new HikariConfig();

config.setMaximumPoolSize(maxActive);

config.setDataSourceClassName(dataSourceClassName);

config.addDataSourceProperty("url", jdbcURL);

config.addDataSourceProperty("user", username);

config.addDataSourceProperty("password", password);

datasource = new HikariDataSource(config);

}


public static Connection getConnection() throws Exception 

{

if(datasource == null)

iniDBPool();

Connection con = null;

try

{

con = datasource.getConnection();

}

catch(SQLException ex)

{

ex.printStackTrace();

}

finally{}

return con;

}


기존의 서비스에서 사용하던 DBCP보다는 좀더 안정적이고 속도도 빠른것 같다는 느낌이 들곤합니다. 좀더 사용하다 퍼포먼스에 대한 의견을 다시 올려 보도록 하겠습니다.


오늘도 밤낮으로 고생하시는 개발자분들에게 조금이나마 도움이되었으면 하는 마음에서 공유드립니다.


세부적인 내용은 다음 페이지를 참고하시기 바랍니다.

링크 : https://github.com/brettwooldridge/HikariCP


728x90
반응형