Q&A

  • Xe2 indy idTCPServer 커넥션 누적 질문입니다.
안녕하세요.
idTCPServer 인데요. h/w와 통신을 하고 있습니다. 그런데 네트워크 환경이 바뀐건지.
어느순간부터 커넥션이 누적되고 있습니다.

하드웨어에서 단순 정보를 서버에 업하고 커넥션을 끊는 환경입니다.

listenQueue 는 3000
ReuseSocket 는 옵션을 모두 바꿔봐도 같은 상황입니다.
TerminateWaitTime 5000 dlqslek.
UseNagle = False;


구조는 다음과 같습니다.
Execute(AContext: TIdContext);

  AContext.Connection.IOHandler.ReadTimeout := 2000;
  AContext.Connection.IOHandler.RecvBufferSize := 4096;

 with AContext.Connection.IOHandler do
  begin
    CheckForDataOnSource(10);
    if not InputBufferIsEmpty then
    begin
      if not AContext.Connection.Connected then
        exit;
      RxBufStr := InputBuffer.Extract;

      RxBufStr := Trim(RxBufStr);
      //데이터를 처리.
     // 그리고 처리한 데이터를 아래와 같이 응답을 보냅니다.
      AContext.Connection.IOHandler.WriteDirect(TBytes(TxBufStr),
    // 여기서 커넥션을 끊지않고. 종료합니다.
    // 왜냐면. 길게 주고받고 하는경우가 있습니다.
    // Disconect 해주면 되긴 하는데..  어짜피 h/w에서 커넥션을 끊기 때문에
    // 또 어떤 데이터를 더 보낼지 모르기 때문에 그냥 커넥션이 끊길때까지 사용을 했습니다.
    // 그런데 어느순간 부터 누적이 됩니다.

end;


질문 1.  aContext의 커넥션이 일정시간 후 5초이후에 자동으로 끊기는 옵션이 있는지요?
      2.  Reuse 때문에 계속 커넥션이 살아 있는 것인지요?
      3.  커넥션을 검사하여 종료된 연결을 끊어버리는 방법이 있는지요?

1  COMMENTS
  • Profile
    kivalan 2013.12.10 04:13

    일단 커넥션에 쓰레드 타임이벤트를 달아서 접속 시작후 끊기는 했는데요. ?

    인디에 구조가 궁금하네요.