여러 대의 서버에서 여러 대의 사용자 지정 Windows 성능 카운터를 집계하여 데이터베이스에 집계하는 프로젝트가 있습니다. 서버가 다운 된 경우, 나는 그것을 건너 뛰고, 단지 나의 하루 만에 계속하고 싶다.C에서 네트워크를 통해 서버에 액세스 할 수 있는지 확인하는 빠른 방법
현재 서버에서 라이브가 실행되고 있는지 확인하려면 서버에서 DirectoryInfo
을 공유 한 다음 나중에 처리해야합니다. .Exists
속성을 확인하십시오.이 코드는 현재 사용중인 코드 조각입니다. 테스트 :
DirectoryInfo di = new DirectoryInfo(machine.Share_Path);
if (!di.Exists)
{
log.Warn("Could not access " + machine.Name + "! Maybe its down?");
continue; // Skips to the next server in my loop where this snippet exists.
}
이 작동하지만 꽤 느립니다. di.Exists 비트가 작업을 완료하는 데 평균적으로 약 68 초가 걸리고, 서버에 액세스 할 수 있는지 여부를 초 단위로 알아야합니다. 서버는 ping 할 수 있지만 우리 환경에서는 "라이브"가 아니기 때문에 ping도 옵션이 아닙니다.
저는 여전히 .NET 세계에 신선한 것이기 때문에 사람들이 제공 할 수있는 조언을드립니다.
미리 감사드립니다.
-Weegee
서버가있을 때, 서버가 없거나 둘 다있을 때 68 초가 걸립니까? –
서버가없는 경우. 서버가있을 때 1 초도 걸리지 않습니다. – Weegee
별도의 작업자 스레드에서 수표를 실행하는 데는 시간이 오래 걸릴까요? – Dolphin