// performanceCounterRequestsTotal

 //

 this.performanceCounterRequestsTotal.CategoryName =

  'Quote Service Counts';

 this.performanceCounterRequestsTotal.CounterName =

  '# of Requests';

 this.performanceCounterRequestsTotal.Readonly = false;

 // ...

Счетчики производительности, которые показывают общие значения, увеличиваются в методе Listener() класса QuoteServer. Метод Increment() увеличивает счетчик на 1, метод IncrementBy() увеличивает счетчик на значение аргумента.

Для счетчиков производительности, которые показывают посекундные значения, в методе Listener() обновляются только две переменные — requestPerSec и bytessPerSec:

void protected void Listener() {

 try {

  listener = new TCPListener(port);

  listener.Start();

  while (true) {

   Socket socket = listener.Accept();

   if (socket == null) {

    return;

   }

   string message = GetRandomQuoteOfTheDay();

   UnicodeEncoding encoder = new UnicodeEncoding();

   byte [] buffer = encoder.GetBytes(message);

   socket.Send(buffer, buffer.Length, 0);

   socket.Close();

   performanceCounterRequestsTotal.Increment();

   performanceCounterBytesSentTotal.IncrementBy(nBytes);

   requestsPerSec++;

   bytesPerSec += Bytes;

  }

 } catch (Exception e) {

  string message = 'Quote Server failed in Listener: ' + e.Message;

  eventLog.WriteEntry(message, EventLogEntryType.Error);

 }

}

Чтобы показывать обновленные значения каждую секунду, используется компонент Timer. Метод OnTimer() вызывается раз в секунду и задает счетчики производительности с помощью свойства RawValue класса PerformanceCounter:

protected void OnTimer(object sender, system.EventArgs e) {

 performanceCounterBytesSentPerSec.RawValue = bytesPerSec;

 performanceCounterRequestsPerSec.RawValue = reguestsPerSec;

 bytesPerSec = 0;

 requestsPerSec = 0;

}

perfmon.exe

Теперь можно контролировать нашу службу. Утилита Performance может запускаться из Administrative Tools|Performance. Нажимая кнопку + в панели инструментов, можно добавить счетчики производительности. Quote Service будет определяться как объект производительности. Все сконфигурированные счетчики показаны в списке счетчиков:

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

Служба счетчика производительности

Если не существует ссылки на объект счетчика производительности, и объект был удален сборщиком мусора, счетчик этого объекта теряется и запускается в следующий раз с 0. Чтобы решить эту проблему, состояние можно хранить в службе счетчиков производительности. С помощью .NET Framework служба счетчиков производительности устанавливается в системе. Необходимо только запустить службу; можно также сконфигурировать службу для автоматического запуска во время начальной загрузки системы.

Свойства служб Windows 2000

Windows 95, 98 и ME не поддерживают службы Windows. Они поддерживаются в Windows NT, Windows 2000 и Windows ХР. Windows 2000 имеет несколько больше свойств для служб по сравнению с Windows NT. Рассмотрим свойства служб в Windows 2000.

Изменения сетевого соединения и события электропитания

В Windows 2000 не требуется, чтобы система перезагружалась так часто, как это было необходимо в Windows NT; например, не нужно перезагружать систему, когда изменяется адрес IP, — служба получает события при смене адреса и действует соответственно. Windows 2000 посылает следующие управляющие коды службам, когда изменяется сетевое соединение:

Управляющий код
SERVICE_CONTROL_NETBINDADD Доступен новый компонент для соединения.
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату