|
handle count 가 증가하는 경우가 어떤 것들이 있습니까?
Client - Server 프로그램을 했는데 주기적으로(7~10일) 서버가 죽습니다.
그래서 제어판 - 관리도구 - 성능을 실행해서 그 Client 프로그램을 올려서 보니까 처음엔
Handle Count가 300 정도인데 1일 지나서 보니까 2000 개가 넘습니다. 그렇게 10 일 정도 지나면 몇만개가
되서 서버가 멈춰버립니다.
Client 프로그램은 서버에서 실행을 합니다. Client 프로그램을 죽였다 다시 실행하면 또 서버가
정상적으로 됩니다.
Client 프로그램을 다른 PC에서 실행을 하면 또 괜찮은것 같습니다.
50개 정도의 장비를 감시하면서 계속 경보내용을 서버에 저장하는 프로그램 입니다.
응답이 없는 경우에는 일정시간 (1분)후에 재접속하고 TListView에 접속현황을 뿌려줍니다.
연결상태이면 소켓을 Close하고 다시 Open, Connect 합니다.
(ListView를 Clear하고 감시하고 있는 장비(50여개)가 연결인지 비연결인지 상태를 보여줍니다.)
closesocket(cli[s].cli_sock);
WSACleanup();
ListView에 끊어진 상태 표시
if( connect(cli[n].cli_sock, (LPSOCKADDR)&cli[n].cli_addr, sizeof(cli[n].cli_addr)) < 0)
{
}
else
{
ListView에 연결 상태 표시
}
Handle Count가 증가하는 경우가 위와같이 Close 할때와 재연결할때 인것 같습니다.
ListView를 Clear하고 표시하는 과정에서 Refresh되고 또 Connet할때 응답이 없으면 몇초가 대기하는 시간때문인것
같은데 이런경우에 Handle Count가 증가할수 있는겁니까?
해결책은 없나요?
그리고 응답없음 이란 메세지가 많이 나오는데 여기에 원인이 있는건 아닌가요?
Client 프로그램을 다른 PC에서 실행하면 괜찮은것 같은데(약간 증가하지만 어느 시점에 가면 유지합니다.)
Client 프로그램을 서버에서 실행할수 밖에 없는 환경이기 때문에 해결을 해야 하는데 정말 이해가 잘 안가네요.
두서없이 질문을 했는데 아시는분 부탁드립니다.
환경은 C Builder5.0, Window 2003, SQL 2000서버, 서버는 HP 제품입니다.
|