본문 바로가기 메뉴 바로가기

개발 메모

프로필사진
  • 글쓰기
  • 관리
  • 태그
  • 방명록
  • RSS

개발 메모

검색하기 폼
  • 메모
    • HTML
    • CSS
    • JavaScript
    • SPRING
    • JAVA
    • 디자인 패턴
    • MYSQL
    • 개발이슈
    • 객체지향
    • AWS
  • 방명록

redirect시 memory leak CASE

@GetMapping("/test") public String test() { return "redirect:/test/"+Math.random(); } @GetMapping("/test/{id}") public String test(@PathVariable Double random) { ... } 스프링 낮은 버전을 사용 할 경우, 위와 같이 redirect prefix를 사용하여 string 형태로 redirect 할 경우 memory leak이 발생할 수 있다. spring 내부적으로 beanName을 기준으로 ConcurrentHashMap에 caching 하는 로직이 있어 pathVariable이 포함된 url 등을 return하게 될 경우 모든 redirect return url이 캐시되어 m..

카테고리 없음
Mysql 파티셔닝

파티셔닝이 필요할 경우 - 테이블이 너무 커서 인덱스의 크기가 물리적인 메모리보다 훨씬 클경우 - 데이터 분리보관이 필요할 경우 파티션 프루닝 - select시 A, B, C 파티션이 있을경우, where 조건에 의해 데이터가 C에만 있다는것을 알 수 있을경우, 최적화 단계에서 필요한 파티션만 골라내고 필요없는 파티션은 배제시키는 것 유의사항 - 파티셔닝시 PK, UK에 파티셔닝키가 포함되어야한다. 즉, 유니크키에 파티셔닝키가 포함되기때문에 기존에 사용하던 UK를 온전히 보장 할 수 없다. - 파티션 단위로 파일이 관리되기때문에 파티셔닝 이전에 비해 동시에 open된 파일의 수가 더 많아진다. open_files_limit 파라미터를 적절히 조절하자. 파티션 종류 - range - list - hash ..

카테고리 없음
RestTemplate으로 대용량 파일 전송시 OOM 방지하기

RestTemplate으로 대용량 파일 전송시 OOM(Out Of Memory)가 발생 할 수 있다. RestTemplate 소스를 열어보면 상단 캡처처럼 setBufferRequestBody를 false로 세팅 후 사용을 권장하고있다. RestTemplate가 내부적으로 버퍼를 사용하게 되는데 이 옵션을 꺼주는것이다. 실제 테스트를 진행해보자. 테스트 결과 실제로 확인해보기위해 750MB Dummy file을 생성한 후 테스트를 진행했다. 결과는 다음과 같다. - 첫번째 동그라미 : setBufferRequestBody(true) - 두번째 동그라미 : setBufferRequestBody(false)

카테고리 없음
이전 1 2 3 4 5 다음
이전 다음

Blog is powered by Tistory / Designed by Tistory

티스토리툴바