분류 전체보기
-
ExecuterService.newFixedThreadPool의 메모리 릭 위험잡따꾸리 2020. 4. 23. 11:31
hreadPoolExecutor는 memory leak 이슈가 있습니다. https://blog.tier1app.com/2014/09/30/memory-leak-in-java-executor/ 공식 자료에 의하면 newFixedThreadPool은 shutdown 하지 않으면 pool내 스레드는 존재 한다고 합니다. 제가 사용하는 서비스에서 shutdown을 하지 않아 pool내 스레드가 parking상태로 남아있게 되고, 이 스레드가 쌓이게 되면서 메모리 누수가 발생하여 OutOfMemory 장애가 발생한 적이 있습니다. catalina.out 의 java.lang.OutOfMemoryError: unable to create new native thread 에러 와 hs_err_pid file 이 생..
-
RESTful API알고있지만 설명할수 없는 것들 2020. 4. 12. 16:09
REST : REpresentational State Transfer의 약자 REST의 기본원칙으로 디자인 된 서비스는 RESTful하다라고 한다. API 설계 중심에 Resource가 있고, HTTP Method를 통해 자원을 처리하도록 하는 것. REST 는 디자인 패턴으로 RESTful 하게 디자인 하는것은 1. Resource 와 Method를 직관적으로 분리한다. - 리소스는 URI로 표현된다. (명사) - 행위는 Method로 표현된다. GET : 조회 POST : 생성 PUT : 일부 Entity 수정 PATCH : 기존 Entity 전체 수정 DELETE : 삭제 2. Message는 Header와 Body를 명확히 구분한다. Body : Entity에 대한 내용 Header : API 정..
-
Spring batch의 메타 테이블WEB/Spring 2020. 4. 8. 13:39
Spring batch project의 Job 실행시 다음과 같은 에러가 발생했다. Caused by: java.sql.SQLSyntaxErrorException: Table 'community_test.BATCH_JOB_INSTANCE' doesn't exist ....!!! Springboot Batch Framework 안에 sql파일로 제공하고 있습니다. 친절하게 주요 DBMS 벤더사 별로 테이블 스키마를 제공. BatchJob이 실행되는 단위인 JobInstance와 그 JobInstance 실제 실행 횟수를 나타내는 JobExcution의 이력을 관리하는 역할을 하며, 우리가 구현한 BatchJob에 대한 운용관리상의 이슈로부터 자유로울 수 있게 됩니다. 1. 이전에 실행했던 BatchJob정..
-
OOP(Object Oriented Programming)알고있지만 설명할수 없는 것들 2020. 4. 1. 11:37
- 객체지향 프로그래밍은 컴퓨터 프로그램을 객체의 모임으로 파악하고자 하는 프로그래밍의 패러다임 중 하나. - 프로그래밍에서 필요한 데이터를 추상화 시켜 상태와 행위를 가진 객체로 만들고, 그 객체들의 상호작용을 통해 로직을 구성하는 프로그래밍 방법 OOP의 장점 - 프로그램을 유연하고 변경이 용이하게 만듬 - 직관적인 코드 분석 가능 - 개발과 유지보수를 편리하게 만듬 - 강한 응집력( strong cohesion ) - 약한 결합력( weak coupling ) 소프트웨어에서의 응집력(cohesion) : 프로그램 한 요소가 해당 기능을 수행하기 위해 얼마만큼의 책임과 아이디어가 뭉쳐있는지, 프로그램의 한 요소가 특정 목적을위해 연관된 기능이 모여서 구현되어 있고, 지나치게 많은 일을 하지 않으면 응..
-
OOM 및 CPU 증가 시 모니터링 방법잡따꾸리 2020. 1. 30. 15:25
1.HeapDump file 분석 java pid 조회 후 heapdump file 생성 경로 : /JAVA_HOME/bin jmap -dump:format=b,file=heapdump.hprof pid 2. heapDump 분석 툴 Eclipse MAT(Memory Analyzer) 실행 힙 메모리 상황을 파악해 메모리 누수 현상과 필요없는 메모리 할당을 감지 할 수 있도록 도움을 주는 툴 가장 많이 사용했던 기능은 Leak Suspects Report, Dominator tree 이며, 메모리를 가장 많이 차지하고 있는 객체에 대한 정보를 제공해 줌. open heap dump → file 업로드 하면 아래 Leack Suspect Report 를 선택. Leack Suspect 는 가장 큰 용량을 ..
-
Prometheus와 Grafana를 사용한 Kafka MonitoringLanguage&Framework 2020. 1. 19. 12:31
1.Promethus 설치 Prometheus Github address : https://github.com/prometheus/prometheus Prometheus 는 오픈소스 모니터링 시스템이다. 대부분의 모니터링 Tool은 push방식 ( 서버에 클라이언트를 설치하고, 클라이언트가 메트릭 데이터를 수집해서 서버로 보내면 보여주는 방식) 이지만 , Prometheus 는 Pull 방식으로 동작한다. 서버에 클라이언트가 떠있으면, 서버가 주기적으로 클라이언트에 접속해서 데이터를 가져오는 방식. Exporter는 모니터링 대상으로 Metric 데이터를 수집하고 , Prometheus 가 접속했을 때 정보를 알려주는 역할을 한다. (서버의 CPU, Memory 등을 수집하는 node-exporter 등..
-
Apache Log4j 취약점 패치WEB 2020. 1. 19. 12:13
Apache Log4j에는 SocketServer 클래스가 신뢰할 수 없는 네트워크 트래픽의 로그 데이터를 수락하여,불안정하게 deserialize되는 취약점이 존재하여,원격 공격자가 임의의 코드를 실행 또는 DoS 공격이 가능하다고 합니다. : CVE-2019-17571 : log4j deserialization of untrusted data in SocketServer 설명 : https://m.blog.naver.com/skinfosec2000/221774181380 취약점 대상 : Apaceh Log4j log4j2 2.8.2 로 마이그레이션 작업 Log4j2 Maven Dependency 추가 org.apache.logging.log4j log4j-a..
-
Longest Increasing Subsequences알고리즘/DynamicProgramming 2020. 1. 12. 15:20
가장 긴 증가하는 부분 수열 https://www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. www.acmicpc.net Memoization 할 Array D D[n] 은 Arr[1] ~ Arr[n] 까지 있을 때, Arr[n]을 마지막으로 하는 LIS 의 길이 D[n] 에 A[n]은 항상 포함되어야 한다. 예제에서 6개의 숫자 10 20 10 30 20 50 의 가장 긴 부분수열의 길이는..