반응형

2020/01 5

HikariCP와 커넥션 누수(Connection Leak) 관련 트러블슈팅

문제 발생운영중인 서비스에서 사용하는 DB에서 특정 테이블들을 분리하여 별도 DB로 구축하는 일이 생겼습니다. 때문에 이를 위해 Multi Datasource를 적용하였습니다.기존 서비스는 Tomcat connection pool이 적용되어있었는데, 이번 작업을 하며 HikariCP로 변경하였습니다.(참고로 Spring Boot 2.0 부터는 HikariCP가 기본 커넥션풀이라고 합니다.)In Spring Boot 1.x, Tomcat connection pool was the default connection pool but in Spring Boot 2.x HikariCP is the default connection pool.적용을 완료하고 정상동작을 확인한 후 개발환경에 반영해둔 다음날..서비스 ..

HikariCP Connection Pool 해제 이슈

몇 일 전, 개발환경에 구축되어있는 백엔드 시스템의 커넥션풀을 변경해야하는 일이 생겨 기존 Tomcat 커넥션풀 (tomcat-dbcp)에서 HikariCP로 변경하였습니다. 변경하면서 기존 설정되어있던 수치들을 HikariCP에서 제공하는 옵션에 맞추어 마이그레이션 했는데요. 완료 후 특별한 문제점은 보이지 않았습니다. 하지만 다음 날 출근 후…. 해당 시스템의 API를 호출하자 갑자기 아래와 같은 오류 메시지가 나오며 시스템이 정상적으로 동작하지 않는 상태인 것이 확인되었습니다. [2020-01-10 08:49:08,143 +0900] [WARN] [c.z.h.p.ProxyConnection] GAMEDB-POOL - Connection com.mysql.jdbc.JDBC4Connection@158c..

IT기본 2020.01.15

gRPC Reference - 예제

전 편에서 gRPC에 대한 설명과 특징을 알아보았습니다. 이번 포스트에서는 grpc-java 모듈을 활용한 몇 가지 예제코드를 소개하고, 실제 프로젝트에 적용하는 방안에 대해 소개해보겠습니다. gRPC Reference - 개요 및 특징 gRPC Basic 프로젝트 생성 Java : 1.8 gRPC : 1.25.0 ProtoBuf : 3.11.0 pom.xml 설정 gRPC + Protobuf 의존성 설정 스텁 생성을 위해 protoc 플러그인 설정 proto 컴파일 -> 애플리케이션 컴파일 순으로 진행되도록 설정 4.0.0 com.nhn.gia gia-grpc 1.0-SNAPSHOT UTF-8 1.25.0 3.11.0 3.11.0 1.7 1.7 io.grpc grpc-netty-shaded runtim..

기타 2020.01.14

gRPC Reference - 개요 및 특징

1. gRPC 란 Protocol Buffer를 IDL (Interface Definition Language)로 사용하는 RPC 프레임워크 구글에서 10년 이상동안 MSA 아키텍쳐 이하 수많은 시스템들, 데이터 센터 간 통신을 위해 사용하던 범용 RPC 프레임워크인 Stubby를 오픈소스화해 공개한 것 1.1. RPC란? RPC (Remote Procedure Call)은 별도의 원격제어 없이 프로세스간 함수나 프로시저를 호출할 수 있도록 하는 통신 기술 서로 통신하는 양 측의 Request, Response에 대한 인터페이스를 정의 후 양 측 프로그래밍 언어에 맞는 코드로 변환해야함. 이 때 인터페이스를 정의하는 용어는 IDL(Interface Definition Language)라 함 IDL이 컴파..

기타 2020.01.13

Spring Ehcache 사용 간략한 정리

1. Spring Cache Abstraction https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-caching.html#boot-features-caching-provider 2. 적용2-1. @EnableCaching Spring Boot Application 설정시 @EnableCaching 어노테이션 추가하여 Application에 캐시 기능 사용하겠다는 것을 알린다 @SpringBootApplication @ComponentScan("com.nhnent.gia") @EntityScan(basePackages = {"com.nhnent.gia.model"}, basePackageClasses = {Applic..