Open tonykang22 opened 1 year ago
@tonykang22 상웅님, 잘 정리해주시고 리서치 해주셨네요.
제가 이해한 바로는
시스템 프로퍼티 http.maxConnections를 할당해주면 늘릴 수 있다.
저희 배포 서버의 시스템 프로퍼티 http.maxConnections 값을 5 이상으로 잡는다면 더 많은수의 Http connection 을 확보하여 forkjoin pool 을 사용할 때 병렬로 처리 가능한 작업의 수가 더 늘어날 것이다 라고 볼 수 있을까요?
만약 그렇다면, 단순히 저희 서버에서 http.maxConnections 값을 상향 조정한다고 해서 바로 그 값이 적용되진 않을것 같다는 생각이 듭니다. TCP connection 은 양방향에 hand shake 를 거쳐 만들어 지게 되는데 상대방쪽 그러니깐 저희로 치면 Rainforest 가 되겠죠. Rainforest 에서 요청을 받아주는 시스템의 설정값 또한 영향을 미치지 않을까 생각되네요.
이건 우선 저희쪽 값을 상향조정해보고 정말 차이가 발생하는지 구체적인 테스트가 필요할 것 같습니다.
@kingwaggs 아..! 해당 이슈 작성 중 호흡이 너무 길어 중간 저장 후 이어 작성하려 했었습니다.
저희 배포 서버의 시스템 프로퍼티 http.maxConnections 값을 5 이상으로 잡는다면 더 많은수의 Http connection 을 확보하여 forkjoin pool 을 사용할 때 병렬로 처리 가능한 작업의 수가 더 늘어날 것이다 라고 볼 수 있을까요?
네 사실 이슈를 작성하며 하나씩 확인해보는게 아니라, 다 확인해본 후에 이슈를 작성 중입니다. 추후 이슈는 그럼 새로운 이슈로 작성해두겠습니다. 참고 및 코멘트 부탁드리겠습니다 ㅎㅎ
Amazon 상품 Sync
개요
status="ON" OR "TBD"
인 상품들의 정보를 rainforest API를 사용해 업데이트 해야한다.status="ON" OR "TBD"
인 상품 수는 약 3,000 개 이다.83 시간
까지 소요될 수도 있다.Thread Pool 선택
Fixed Thread Pool
: 스레드 풀 생성 시 가용할 스레드의 수를 지정한다.Cached Thread Pool
: 필요한 만큼 추가로 스레드를 생성한다.Scheduled Thread Pool
: 지정한 시간에 따라 작업을 요청할 수 있다.Work Stealing Pool
(ForkJoinPool)가 존재한다.Recursive
한 Task/Action에 대한 작업에 특화되어있다.결론은...?
ThreadPoolExecutor
로 직접 구현RestTemplate 동시성 문제
RestTemplate ?
RestTemplate의 동작 원리
그렇다면...
현재 HWAS project에서는 어떻게 사용되고 있는가?
build()
를 호출하게 되면configure()
가 호출된다.ClientHttpRequestFactory requestFactory = buildRequestFactory();
로 이동하면,requestFactory = new ClientHttpRequestFactorySupplier().get();
를 호출하게 된다.SimpleClientHttpRequestFactory
를 반환하는 것을 알 수 있다.SimpleClientHttpRequestFactory ?
ClientHttpRequestFactory
의 구현체로SimpleClientHttpRequestFactory
를 사용하고 있다.SimpleClientHttpRequestFactory
는 connection pool을 사용하지 않는다고 한다.The bad guy is found
로 지적되는 사용이었다니...SimpleClientHttpRequestFactory
짧은 결론중간 결론
HttpComponentsClientHttpRequestFactory
를 기본 골자로 가져가되,BufferingClientHttpRequestFactory
,InterceptingClientHttpRequestFactory
등의 사용은 추후 요구 사항이 발생하면 사용을 고려하도록 하자.