2011-10-08 7 views
3

저는 현재 Windows 시스템에서 nginx를 실행 중이며 웹 서버의 통계를 보여주는 작은 제어판을 만들고 있습니다.동일한 이름을 가진 모든 프로세스의 성능 카운터?

프로세스의 CPU 사용량 및 메모리 사용량에 대한 성능 카운터를 얻으려고 시도하고 있지만 nginx는 둘 이상의 프로세스로 보여줍니다. 구성 파일의 설정에 따라 2 - 5에서 다를 수 있습니다. 내 설정은 두 프로세스를 보여줍니다. 그래서 nginx.exe와 nginx.exe

% Processor TimeWorking Set - Private 어떤 성능 카운터를 사용할 지 알지만 두 프로세스의 개별 값을 어떻게 얻을 수 있습니까? 최종 가치?

Waffles question에있는 코드를 사용해 보았지만 첫 번째 프로세스의 값만 출력 할 수있었습니다.

감사합니다.

편집 - 작동 코드 그 질문에 대한 허용 대답에서

for (int i = 0; i < instances.Length; i++) 
        { 
         //i = i + 1; 
         if (i == 0) 
         { 
          toPopulate = new PerformanceCounter 
           ("Process", "Working Set - Private", 
           toImport[i].ProcessName, 
           true); 
         } 
         else 
         { 
          toPopulate = new PerformanceCounter 
           ("Process", "Working Set - Private", 
           toImport[i].ProcessName + "#" + i, 
           true); 
         } 

         totalNginRam += toPopulate.NextValue(); 

         instances[i] = toPopulate; 
        } 

답변

1

봐. perfmon을 실행 해보십시오. 같은 이름이 프로세스 등이 nginx#1 수 귀하의 경우 등이 process#1 같은, process#2, nginx#2로 식별됩니다

편집 : 당신은에 인스턴스 이름을 통과해야

중 적절한 constructor overload 또는 InstanceName 속성 this에 따르면 올바른 형식이 밑줄을 사용하는 것처럼 보입니다. 따라서 process_1, process_2.

+0

nginx # 2 인 경우이를 어떻게 식별자로 선택할 수 있습니까? –

+0

perfmon이 nginx 및 nginx # 1로 표시되는지 확인하십시오. –

+0

제 편집을 참조하십시오. 그래서'nginx'와 아마도'nginx_1'을 사용하십시오. –