본문 바로가기

java13

JDBC Connection pool 모니터링 지표에 대한 이해 서버군 모니터링 인프라 구축 업무 중, Jdbc Connection pool을 모니터링해야 할 일이 생겨 공부한 내용을 정리합니다. 스레드 풀과 커넥션 풀의 기본 개념을 이해하고 있다고 가정합니다. 목표는 아래와 같습니다. active connection / idle connection / pending thread의 의미를 이해한다. connection usage time / creation time / acquire time 의 의미를 이해한다. 가장 흔한 구조인 3-계층 구조를 그림으로 간단히 표현했습니다. 위 그림에서 WAS에 집중해 보겠습니다. WAS가 사용자 요청을 처리하는 방법은 아래와 같습니다. 사용자 요청이 감지되면, 해당 요청을 처리하기 위한 담당 스레드를 스레드 풀로 부터 얻습니다. .. 2021. 12. 1.
[Udemy: Java Multithreading, Concurrency & Performance Optimization] Motivation 멀티스레딩을 사용하는 이유 동시성을 구현하여 반응성을 높인다. Single core 상황이라고 가정해 보자. 프로세스의 수행 과정은 크게 연산과 입출력으로 분리할 수 있다. 입출력은 core를 점유하지 않는다. 현대적인 컴퓨터는 대부분 IO를 담당하는 별도 장치가 있다. 사용자의 입출력은 컴퓨터 입장에서 매우 block이 심한 작업이다. 예를 들어, 키보드 입력이라고 하자. 사용자는 0.1초에 한 번씩 키보드 입력을 한다고 해도 컴퓨터 clock속도에 비해 매우 매우 느린 속도다. 근데, 일반적인 프로그램은 이걸 기다린 후 처리해야 한다.(반응형 프로그램) 많약 동시성이라는 개념이 없다면? Single core에서 하나의 프로세스가 끝날 때까지 다른 프로그램이 대기 상태가 된다. 근데, core를 점유하.. 2021. 11. 25.
java - Exception과 logging이 성능에 미치는 영향 1. 서론 개인 프로젝트는 사용자가 많은 경우가 드물기 때문에 부하가 있을 때 성능적으로 어떤 문제가 발생할지 경험하기 어렵고 따라서 고민도 덜 하게 되는 것 같다. 반면, 회사에서 개발을 해 보면서 위에서 언급한 부분에 대해 자연스럽게 더 고민하게 된다. Exception과 logging에 대한 고민도 이러한 맥락에서 출발한다. 2. Exception spring framework로 개발하면서, controller advice라는 기능을 활용해 Exception을 멋지게 처리할 수 있다는 것을 알게 되었다. 분리되어 있던 Excption에 대한 처리 로직을 한 곳에서 관리할 수 있어 매우 깔끔하다고 생각했다. 공부한 것을 적극 반영하고 싶었던 나는 비즈니스 로직에 많은 부분에서 Exception을 발생.. 2021. 10. 8.
java - InputStream& OutputStream close 1. 서론 회사 업무 중 클라이언트로부터 전송되는 파일을 수신하고 저장하기 위한 파일 서버를 개발하게 되었다. (참고로, 회사의 서버 개발 환경은 spring boot + tomcat) 서버 입장에서 파일을 수신하기 위해 생각한 방식은 2가지가 있었다. multipart/form 기반 octet-stream 기반 multipart/form의 경우 컨트롤러에서 MultipartFile로 요청 데이터를 수신하면 tomcat이 알아서 파일을 수신해 준다. @PostMapping("") public ResponseEntity upload(@RequestPart MultipartFile file) throws Exception { //file 파라미터에 파일 객체가 알아서 들어온다(was level에서 처리해줌).. 2021. 9. 28.