Какое снижение производительности происходит при использовании счетчиков производительности WCF (performanceCounters = "ALL")?
У кого-нибудь есть опыт использования счетчиков производительности WCF в производственной системе и проблемы с производительностью? Я подозреваю, что если вы отслеживаете все службы, конечные точки и операции и записываете все счетчики в файл с выборкой каждую секунду, то это наихудший сценарий. Из того, что я понял, попадание происходит, когда вы на самом деле производите выборку, а не когда счетчики включены. Какой-нибудь реальный опыт использования их в производстве?
1 ответ
Я не могу ответить за WCF подробно, но счетчики производительности в целом работают, постоянно записывая значения в некоторую разделяемую память. Таким образом, WCF всегда записывает значения в файл с отображенной памятью или раздел с общим доступом в DLL.
Когда приложение perfmon хочет отобразить их, оно загружает общую память и читает из нее. Это не удар по производительности особенно.
Проблема возникает, когда вы хотите что-то сделать с этими данными счетчика, например записать их в файл или обновить график. Вот тогда производительность начинает быть заметной. Это удваивается, если читатель работает по сети.