개요

2015년 7월에 썼던 다른 블로그 URL의 글을 옮긴 글이다.

[어디까지나 개인 목적으로 테스트 해본것으로 공신력 있는 자료로 생각하면 안된다]

인터넷에 돌아다니는 벤치마크는 성능 측정을 위해 의도된 코드를 사용한 것들이 대부분이었다. 내가 필요한 벤치마크는 톰캣 + 스프링 환경에서 실제 select쿼리를 호출했을때
과연 HikariCP가 빠른지가 궁금해서 직접 간단히 테스트 해보았다.

dbcp 버전

tomcat dbcp 7.0.47
HikariCP 2.4.0

측정환경

  • 로컬머신(제온, 64GB램) – 개발기 오라클장비(12)
  • WAS는 스프링 부트 1.2.3, ibatis로 오라클 쿼리 호출
  • 로컬 Jmeter 2.11로 로컬에 WAS로 호출
  • 같은 쿼리의 request를 200쓰레드로 호출함
    => 나름 로컬머신이 좋은 장비이고 로컬에서 CPU가 80% 밑으로 유지하여서 의미가 있다고 판단

측정결과

tomcat dbcp : 1373(average latency), 123(TPS)
hikaricp : 1310(average latency), 130(TPS)

결론

https://github.com/brettwooldridge/HikariCP에서 광고하는 것만큼
드라마틱한 성능향상은 내가 직접 측정해본 바로는 없었다. 다양한 파라미터의 쿼리가 아니고 로컬->로컬로의 성능 측정이기 때문에 한계점이 있지만 기본 풀링만으로도 HikariCP의 성능이 좋은지가 궁금했는데 살짝 실망했다.

회사에서 상용 datasource를 JNDI로 관리하기 때문에
기회가 될때 운영서버에 WAS 인스턴스 1대정도 HikariCP를 설정해서 하루정도 추이를
지켜봐야 더 확실할것 같지만 로컬 결과를 봤을때는 회의적이다.