thread poll 을 이용해서 간단한 웹서버를 구현할 때 질문입니다.
글쓴이: trymp / 작성시간: 월, 2013/04/29 - 11:02오전
CentOS 에서 8개의 CPU core 를 가지고 웹서버를 구현할 때,
웹서버를 개발하려고 하는데요. 간단한 것임.
1000개 정도의 thread pool 을 만들고 sleep 상태로 만든 다음,
main thread 에서 accept 받아서 소켓을 작업 thread 에 할당하고
깨워서 일을 시키는 방식입니다.
잠재우고 깨우는 것은 mutex 를 가지고 할 생각입니다.
이때 깨워서 일 시킬 때, 접속이 많은 상태라면
깨우더라도 스케쥴러로 부터 time slice 를 늦게 할당 받아
제시간에 작업을 처리 못할까 하는 걱정입니다.
그냥 1 대 1 PC 에서는 많은 접속을 수행해 보았는데요.
실제로 많은 접속이 있는 경우 thread 가 제때 작업을 처리 못해서
timeout 이 나지 않을까 의문입니다.
고수님들의 의견 부탁드립니다.
Forums:
테스트 해보세요. ㅇ_ㅇ;;
잘 만들어진 예제가 있으니까요. 한번 참고해 보세요.
저도 잘 몰라서... 말씀 드리기 곤란해요... ㅇ_ㅇ;; 해보고도 싶지만... ㅡ_ㅡ;;
//thread pool 방식
http://yoonka.tistory.com/27
http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/Thread/Advanced/CondThreadPool
http://blog.naver.com/PostView.nhn?blogId=shin7688&logNo=120092862703&redirect=Dlog&widgetTypeCall=true
http://sotddi.tistory.com/entry/Thread-Pool
http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/Thread/Advanced/ThreadPool
//메시지 방식
http://kldp.org/node/137628
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
...
8 core 에 1000 여개의 thread 를 생성하면은 부담이 되지 않을까요? 아무리 thread 가 process 보다는 가볍다고는 하지만 thread 개수가 너무 많은것이 아닌가 예상됩니다.
8 core 의 경우 동시에 최대 8개가 돌아갈수 있을것이고 I/O 와 같은 context switching 되는 환경을 생각한다면 1.5 ~ 2배정도의 쓰레드가 적당할것 같습니다. (이부분은 workload 에 영향을 많이 받으니 벤치마크를 통해서 적절한 수의 thread 를 찾으셔야할것 같습니다.)
apache bench 와 같은 것을 이용해서 1K 부터 10K 이상의 connection 에 따른 throughput 및 latency 를 측정하면서 적정수준의 thread 를 찾아 보시기 바라겠습니다.
덧붙여 http://en.wikipedia.org/wiki/C10k_problem 와 http://www.kegel.com/c10k.html 를 한번 보시면 많은 도움이 될것 같습니다.
댓글 달기