|
안녕하세요!
님의 관점이랑 저의 관점이 다를 수 있지만.. 그럼에도 불구하고 글 올립니다.
서버에서 1000 2000 코넥션을 받을수 있습니다.. 하지만...
코넥션을 받는게 문제가 아니라는거져... 몇백 몇천 코넥션을 받으면 몰 합니까
시스템에서 처리를 못하는데... 그래서 분산 처리를 하겠지만 쩝~~
1> 1 Client per Thread
저도 Indy TCP로 서버를 작성해 보았습니다. 물런 뛰어난 엔진이죠
하지만 Thread들간의 Switching으로 인한 포퍼먼스 저하를 고려
하신다면 만만치 않다는거져 솔직히 우리나라 실정에선 "1 Client
per Thread"는 무리 입니다.
서버는 클라이언트로 부터 요청한 일을 해주야 하는데 몇백 Thread인
경우는 Thread를 Switching 한다고 서버는 일을 못하게 됩니다.
2> Thread per CPU
포퍼먼스을 올릴려면 포그란운드 백그라운드 방식 이라더군여
그래서 cpu 당 2개의 Thread 라는 소리가 있습니다.
주어 들은거라 자신은 없습니다.
3> Indy Execute
TThred의 Execute를 virtual로 구현한걸로 사료됩니다.즉 Override.
Read 할때 블럭화 되는 기능이 있어서 읽기 전 까지는 다음 함수가
실행 못하게 만들어 둔것 외에는 스위칭으로 인한 포퍼먼스 감소를
막을수 없다고 생각이 듭니다.
Thread를 사용하는 이유는 Client의 요청을 처리 하고 있는 도중에
패킷이 날라오면 그 패킷을 읽기 위해서 사용하는거라 Switching은
꼭 필요하지요 하지만 Indy에서 이런걸 내부적으로 포퍼먼스 저하를
막는다면 다시 한번 생각 해보지 않을수 없군여.
즐프 하십시요!
제라툴 님이 쓰신 글 :
: 양정석 님이 쓰신 글 :
: : Borland C++ builder에는 ServerSocket, ClientSocket이 이미 있습니다.
: : 그런데Indy 컴포넌트를 많이 쓴다고 하는데 특별한 이유가 있나요?
: : 원래 기본 컴포넌트가 불안하다거나 아님 인디에 특별한 기능이 많아서 인가요?
: :
: 안녕하세요 제라툴입니다.
:
: ServerSocket, ClientSocket에 약간의 버그가 있다는 소문이 있어서 겠죠.^^
:
: 하지만 많은 차이가 있어요..
:
: Indy의 경우는 클라이언트가 접속할때 하나의 쓰래드가 달당되어 커넥션이
:
: 이루어 지는 점이 가장큰 차이점인데..
:
: 쓰래드를 사용하는 만큼 시스템 사양을 요구할 꺼라 생각이 들지만..
:
: 실제로 2000서버에서 테스트 해본결과 ..오히려 ServerSocket 보다
:
: 많은 클라이언트를 관리 할 수 있더군요.
:
: 쓰래드 관리 부분에 굉장한 스킬이 숨어 있을 꺼라 생각됩니다.
:
: Indy를 분석해 보지 않았지만 ...^^
:
: 한번 뜯어 보세요 가장 좋은 방법은 뜯어 보는거니까..
:
: From Zeratul
|