|
IOCP 를 이용한 프로그램을 서비스 하고 있습니다.
클라이언트에서 요청한 패킷에 대하여 서버 도달시간 정보를 출력해 보고 있는데 이상한 점이 있어서 질문 올립니다.
특정 시간대에 서비스에 많은 통신 딜레이가 생기고 있는데요.
클라이언트에서 전송한 패킷이 서버에 도달하기까지 상당한 시간(1분 이상까지도) 이 걸리고,
그에 대한 처리 결과를 클라이언트에 전송하는 부분은 전혀 딜레이가 없고요.
위 시각은
GetQueuedCompletionStatus(handleIOCP, &bytesTransfer, &keyValue, &overlapped, 10);
다음 줄에서 체크한 시간입니다.
같은 서버에 테스트용 서버(같은 실행파일)를 포트만 바꿔서 올리고, 테스트 클라이언트 한대만
접속한 경우는 위 같은 시간 딜레이가 발생하지 않네요.
특정 시간대에 외부의 어떤 영향이 있는것은 확실한듯 한데요, 왜 사용자가 많은 (100여명 정도)
서버만 딜레이가 있고, 한명의 사용자 서버는 딜레이가 없는 걸까요?
사용자가 많은 서버의 작업 쓰레드 현황을 보면, 거의 모든 쓰레드가 놀고 있는데 말이죠..ㅠ.ㅠ
위 서버에 300 ~ 450 명 까지 접속한 경우에도 딜레이가 없이 돌아가는데..ㅠ.ㅠ
혹 이 같은 경험이 있으시다면, 참고할 만한 점이라도 도움 말씀 주시면 고맙겠습니다.
즐거운 하루 되세요..
|