|
안녕하세요 kermi(정남영)입니다.
결론부터 말씀드리면 하늘소님께서 질문하신 포트부하는 신경쓰지 않아도 됩니다.
Port번호라는건 TCP가 Application에게 데이터를 던져줄때 또는 그 반대의 경우에
사용하는 주소에 불과하기 때문에 TCP Layer부터 데이터가 송수신되는 부분까지는
Port번호별로 따로 연산을 하지 않는다는 겁니다.
TCP/IP는 송, 수신에 관련된 모든 사항을 TCP와 IP Layer에서 처리를 하며
TCP와 IP Layer에서는 포트번호를 따지면서 작업을 진행하지 않습니다.
그러므로 서버의 성능에서 Port부하는 무의미한 사항입니다.
하지만 이러한 경우는 조심해야 됩니다.
예를들어 2000번 포트를 사용한다고 할때 데이터를 수신하는 부분이 패킷을 한번받고
10초의 연산을 하고 다시 수신작업을 하게 되면 TCP 버퍼는 계속 누적되게 되고
결국엔 서버가 죽는 현상이 일어나게 되죠.. 이런건 Port의 성능이라기 보다는
Application의 개발을 잘못한 결과입니다. 만약 이러한 경우가 발생할수밖에 없는
경우라면 Port번호를 여러개 두어 처리하는 것도 한가지 방법이 됩니다.
답변이 잘 되었나 모르겠군요.. ^^
하늘소 님이 쓰신 글 :
: 포트부하 라는 표현이 맞는지는 모르겠는데요..
:
: 포트 하나를 열어놓고 들어오는 클라이언트들을 받아들입니다.
:
: Accept 되고 나면 쓰레드로 넘기도록 합니다.
:
: Receive 나 Send 는 어차피 같은 포트를 통해 주고 받는거 아닙니까 ? 맞는지 모르겠어요 ㅜㅜ
:
: 쓰레드는 2000 개 까지 생성가능하다고 하는데요..
:
: 한 포트에서 1500 개 쯤 되는 쓰레드가 Receive , Send 하고 있어도 포트에는 부하 같은게 없나요 ?
:
: 질문이 너무 엉뚱한지는 모르겠는데요..
:
: 부하가 있다면 여러포트를 열어줘야 할것이고 포트가 2000 보다 훨씬 더 많은 양에도 끄떡 없다면
:
: 신경쓰지 않아도 되잖아요. 제가 소켓통신의 기초부터 잘못 알고 있는지도 모릅니다.
:
|