본문 바로가기

web4

ElasticSearch Index 질의(w/ python) 특정 검색 결과를 질의해서 반환받아보자. from elasticsearch import helpers, Elasticsearch import csv, sys es = Elasticsearch(sys.argv[1]) res = [] # Process hits here def process_hits(hits, results): for item in hits: results.append(item) return results data = es.search( index=sys.argv[2], size=10000, scroll='5m', body={ "query":{ "query_string":{ "default_field":"data", "query":"*데이터*" } } } ) # Get the scroll I.. 2022. 6. 7.
Spring Cloud with Aws Secrets Manager 애플리케이션 프로퍼티에 DB 계정 정보를 하드코딩된 상태로 사용하지 않기 위해 AWS Secrets manager 를 사용하게 되었다. KMS 에 저장된 암호화 키로 secrets manager 에 자격 증명을 해서 필요한 보안 정보를 복호화해서 반환해주는 서비스이다. aws java sdk를 사용하려다 Spring Cloud에서 스프링 프로퍼티 소스를 이용해서 AWS Secrets manager 매커니즘을 사용할 수 있기에 org.springframework.cloud:spring-cloud-starter-aws-secrets-manager-config 를 간단하게 라이브러리를 추가해서 활성화시켰다. 스프링 부트에서 제공하는 환경별로 프로퍼티를 구성하는 것처럼 동일하게 프로필을 명시해주면 모든 서비스 .. 2020. 2. 3.
ThreadPoolTaskExecutor RejectedException 발생 Executor 로 스레드 관리가 용이해졌는데, https://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html 이를 활용해서 비동기로 카프카에 이벤트 발생하여 전달하고 있다. TaskExecutor 가 설정해놓은 사이즈(PoolSize , QueueCapacity) 를 초과하면 OOM 이 발생하여 RejectedException 이 발생하여 중요한 이벤트들이 reject 되어버린다. RejectedExceptionHandler 기본값은 AbortPolicy(task reject 후에 throw exception)인데, ThreadPoolExecutor.CallerRunsPolicy를 설정하여 모니터링 시스.. 2017. 5. 31.
대용랑 데이터 조회 처리 iBatis에서 6만건을 조회해서 ArrayList 로 메모리에 담아 엑셀로 다운로드 작업하는데 1분 20초가 걸렸다. 운영 DB에는 100만건이 있는데, 중간에 뻗어버린다. 구글링해본 결과, - fetchSize 부분범위처리라고 해서 ArraySize를 조정해서 Fetch Call을 감소해서 대량으로 데이터를 내려받는 것. 블록 I/O도 감소. 로컬환경에서는 6만건 처리가 확연히 빨라졌지만, 개발 서버 WAS에서 실행했을 때 OOM 발생.뭔가 잘못설정하긴 한 것 같다. (fetchSize 100과 600 차이는 나지 않았다)- rowHandlerhttps://ibatis.apache.org/docs/java/user/com/ibatis/sqlmap/client/event/RowHandler.htmlib.. 2016. 4. 28.