지금 한 요청이 들어오면 순차적으로 몇개의 작업을 하는데 이걸 병렬적으로 처리하려고 시도 중입니다
그런데 만약 요청이 엄청 많이 들어올 경우
각각의 요청을 처리하는 과정에서 멀티 스레딩을 때문에 너무 많은 스레드를 생성해야 할 수도 있고 스레드 풀을 사용하더라도 제한된 수의 스레드에 대해 경쟁이 심해 비효율적일 것 같습니다
이런 이유로 요청 처리 로직의 일부를 병렬화하는 것이 맞나 하는 생각이 들고 다른 분들은 어떻게 생각하시는지 궁금해 여쭤봅니다
추가로 실무에서는 개발 과정에서 멀티 스레딩 적용을 어느 시점에 고려해보는 지 궁금합니다
그런데 만약 요청이 엄청 많이 들어올 경우
각각의 요청을 처리하는 과정에서 멀티 스레딩을 때문에 너무 많은 스레드를 생성해야 할 수도 있고 스레드 풀을 사용하더라도 제한된 수의 스레드에 대해 경쟁이 심해 비효율적일 것 같습니다
이런 이유로 요청 처리 로직의 일부를 병렬화하는 것이 맞나 하는 생각이 들고 다른 분들은 어떻게 생각하시는지 궁금해 여쭤봅니다
추가로 실무에서는 개발 과정에서 멀티 스레딩 적용을 어느 시점에 고려해보는 지 궁금합니다
비동기 크크루크크 삥뽕 - dc App
스레드 경쟁이 왜 심함? blocking I/O 때문에 스레드가 밀린다는거야?
풀에 있는 스레드 수보다 처리해야 하는 작업의 수가 많으면 작업이 큐잉이 되고 큐잉이 되면서 경쟁이 심해지고 따라서 멀티 스레드를 안 쓰느니만 못 할거 같다는 생각이었습니다
그리고 님이 하려는 작업이 CPU Bound 작업인지 I/O Bound 작업인지? 에 따라서 스레드 수가 적어야 할 수도, 좀 더 가져갈 수도 있움
생각보다 고려할 게 많네요 말씀해 주신 것들 더 공부해 보겠습니다. 답변 감사합니다.
멀티스레드는 병렬작업이 아님. Io가 큰 작업들이 아니라면 멀티스레드로 최적화를 꾀할 수 없음.
멀티스레드가 병렬 프로그래밍을 하는 것이 아니었나요? 혹시 제가 어느 부분을 잘못 알고 있는지 좀만 더 설명 가능하신가요?
병렬성은 물리적인 작업이 병렬적으로 이루어진거고 멀티스레딩은 말 그대로 스레드가 여러개인거라 환경에 따라 동시적, 병렬적이 될 수도 있움
병렬화 해도 같은거 아님? - dc App
멀티스레딩을 이용해 병렬화를 한다 생각했는데 병렬화를 하려면 어떤 것을 사용해야 하나요?
1. 실버불릿은 없음. 멀티스레드를 쓰는건 오버헤드를 감수하면서 자원낭비를 줄이는거지 스레드 두개된다고 성능두배되는게아님. 멀티스레드를 써야하는 이유가 타당치않으면 걍 싱글로 돌리는게 나음 2. 99퍼센트의 상황에서는 니가걱정하는 문제가 안생김 3. 그럼에도 궁금함을갖는 태도는 좋음. 가장 기초적으로 스케일아웃 이라는 키워드로 찾아보셈
방향 제시해 주셔서 감사해요 성능 조금이라도 더 올려 보려고 한 건데 오버엔지니어링인 것 같다는 생각이 듭니다 답변 감사해요
os공부좀 하고오세요; - dc App
화이팅 밝게 살아 행복 가득하고