Q&A

  • indy tcpserver를 이용한 최대 동시 접속 유지 클라이언트 테스트
델파이 초보입니다.

indy tcpserver를 이용해서 다수의 클라이언트가 tcp 연결을 유지하는

가운데, 동작하는 C/S를 구현하려 합니다.

구현에 앞서 몇가지를 테스트하고 있는 중입니다.

indy tcp 서버로 단순히 연결만 허용하는 서버모듈과

단순히 연결을 하는 클라이언트를 준비하여, 최대 동시 접속 connection을 구하고 있습니다.

tcp 서버의 property를 보니, maxconnections가 0로 default값을 갖더군요.

그러니, 어플리케이션쪽에서는 최대한 연결을 허용하고 있습니다.

제가 지금 테스트를 해보니, 단순 연결임에도 불구하고 동시 connection수가 2000개 이상을 갖을 수

없더군요.

서버의 cpu load나 메모리 사용량은 문제가 없어 보입니다. cpu는 거의 사용하지 않고, 메모리는

아직 충분하더군요. 2000 커넥션 정도에 200MB 정도 사용합니다.

환경은 서버는 MS-Windows 2003 서버, 클라이언트는 MS-Windows XP입니다.

다각도로 문제를 파악해 보려고 하니, 다음과 같은 문제가 있을것 같습니다.

1. OS의 또는 한 프로세스의 최대 오픈 socket수
    -> 한 프로세스가 또는 OS가 오픈할수 있는 최대 소켓의 문제가 아닐까 추측합니다.
    -> 제가 Unix쪽 작업만 해 와서 Windows쪽 제한 사항을 모릅니다.
2. OS의 또는 한 프로세스의 최대 생성 Thread수
    -> 역시 indy 서버의 방식이 스레스방식의 blocking 소켓이니, thread를 더 이상 생성할 수
    -> 없다면 문제가 되겠죠.
3. 메모리
    -> 테스트 결과 메모리의 부족은 아닌것 같습니다.

여기까지가 제가 추측하고 있는 문제입니다.

여기에 계신 고수님들의 다른 견해를 듣고 싶습니다.

혹시, 1,2번의 문제라면 OS의 설정값을 확장가능하다면 그 방법도 알려주시면 감사하겠습니다.
0  COMMENTS