Счетчики производительности для всех процессов с одинаковыми именами? - PullRequest
3 голосов
/ 08 октября 2011

В настоящее время я использую nginx в своей системе Windows и создаю небольшую панель управления для отображения статистики моего веб-сервера.

Я пытаюсь получить счетчики производительности для использования ЦП и памяти для процесса, но nginx показывает, что это более чем один процесс, он может варьироваться от 2 до 5 в зависимости от настройки в файле конфигурации. Моя настройка показывает два процесса, поэтому nginx.exe и nginx.exe

Я знаю, какие счетчики производительности использовать, % Processor Time и Working Set - Private, но как мне получить отдельные значения обоих процессов, чтобы я мог сложить их вместе для получения окончательного значения?

Я попытался использовать код, найденный на Вопрос о вафлях , но он мог вывести значения только для первого процесса из двух.

Спасибо.

РЕДАКТИРОВАТЬ - Рабочий код

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 Ответ

1 голос
/ 08 октября 2011

Посмотрите на принятый ответ на этот вопрос.Попробуйте запустить perfmon.Процессы с одинаковыми именами будут идентифицироваться как что-то вроде process#1, process#2 и т. Д. В вашем случае это могут быть nginx#1, nginx#2 и т. Д.

Редактировать:

Вам необходимо передать имя экземпляра либо в соответствующую перегрузку конструктора , либо в свойство InstanceName.Согласно это , похоже, что правильный формат должен использовать подчеркивание.Итак, process_1, process_2.

...