전체 글
nginx 499 응답 처리
nginx에서만 사용하는 499 응답이 있다. 이 응답은 클라이언트가 연결을 끊어버리면 nginx에서는 응답할 곳이 사라지기 때문에 발생한다. 프록시 재전송 스케줄러와 관련해서 해당 응답이 발생했을때 backup 서버를 호출하지 않는 이슈가 발생했다. 원인 : 1. WAS에서 알 수 없는 오류로 DB 풀이 가득 참 2. 클라이언트에서 timeout 발생(connection close) 3. nginx에서 클라이언트 연결이 끊겨서 499 발생(upstream backup 호출 안됨) 4. WAS에서 처리되지도 않고 backup 호출이 안되서 재전송 스케줄러도 동작 X(데이터 유실) 해결방법 1 : proxy_next_upstream error timout h..
레거시 스케줄러에 배치 처리 방식 적용하기
기존 프로젝트에서 레거시 스케줄러 코드에 배치 형식을 적용한 코드를 공유한다. 레거시 스케줄러에서도 배치 형식을 적용되어 있었다(ex. 백만건 -> 1000건 단위 배치 작업)1000건을 threadPoolExecutor(thread-size : 10)를 사용하여 작업을 처리 하였는데 [AS-IS] for(File file : fileList){ threadPoolExecutor.submit(new BulkFile(file,....));} 이렇게 submit이 1000번 호출되고 10개는 스레드 풀이 작업을 나머지 990개는 queue에 쌓였다(스레드가 하나씩 가져와서 작업).스레드가 하나씩 가져와서 작업하는 방식은 context-switching이 자주 발생하고 불필요한 오버해드가 많이 발생해서 ..
대용량 파일 관리 스케줄러 개발 정리
프록시 서버(cpu : 4코어, 메모리 : 8GB)로 받은 API 데이터를 WAS로 전송하지 못했을때 데이터를 파일로 만들어서 주기적으로 재전송 하는 스케줄러 개발 요구사항.재시도 횟수 5회까지는 1분 마다 Call재시도 횟수 5회 이상 10회 까지는 30분마다 Call재시도 횟수 10회 이상일때는 Fail 폴더로 이동 파일명에 _숫자로 재시도 횟수를 표현 했고 1분, 30분 간격으로 돌아가는 스케줄러 두개를 만들었다. Files.walk로 스트림으로 파일들을 가져와서 WAS를 호출하고 실패하면 파일명에 재시도 횟수를 증가하게 했다. 몇만건 데이터를 처리하는데 문제가 없었으나 백만건 이상 파일을 만들어서 테스트를 하니 OOM이 발생했다. 1. 속도 저하스래드 5개로 파일을 돌렸는데 TPS가 150 정도만..
라이브러리 없이 만드는 간단한 로딩바(loadingbar)
흰색 부분이 회전하는 간단한 로딩바를 html, css, js만 가지고 라이브러리 없이 만들어 보자. html body 태그 안에 원하는 곳에 넣어 준다. css #loading { position: fixed; top: 50%; left: 50%; display: none; width: 50px; height: 50px; border: 3px solid rgba(255, 255, 255, 0.3); border-radius: 50%; border-top-color: #fff; animation: spin 1s ease-in-out infinite; -webkit-animation: spin 1s ease-in-out infinite; z-index: 9999; } 원하는 크기 및 속도, 색상 등 수정 ..
String 메서드 모음
String.prototype.indexOf : 전달 받은 인수와 매치되는 첫번째 인덱스를 반환 ex) const str = 'hello world'; str.indexOf('l') // 2 str.indexOf('l',3) // 3 (두번째 인수가 있으면 그 인덱스부터 검색) str.indexOf('z') // -1 String.prototype.search : 전달 받은 정규 표현식과 매치되는 첫번째 인덱스를 반환 ex) const str = 'hello world'; str.search(/o/) // 4 str.search(/z/) // -1 String.prototype.includes : [ES6] 전달 받은 문자열이 포함되어 있으면 true, 아니면 false 반환 ex) const str =..