Может ли синхронный сбор мусора быть причиной регулярных скачков производительности? - PullRequest
1 голос
/ 20 января 2012

Я тестирую очень простой .NET Webservice, размещенный в IIS.Веб-сервис - это всего лишь один метод, который выполняет простой расчет и возвращает целое число.Я настроил JMeter на отдельном сервере, чтобы протестировать этот метод, используя 500 потоков, каждый цикл 500 раз.Поэтому метод вызывается 250000 раз, и я отображаю график производительности и времени отклика.

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

Хотя это очень маленький процент, и влияние на общую производительность не является проблемой, я хотел бы понять, в чем причинавыбросы могут быть.До сих пор моя единственная теория заключается в том, что синхронная сборка мусора в asp.net заставляет приложение приостанавливаться на доли секунды с регулярными интервалами.

Я хотел бы знать, может ли сборщик мусора быть ответственным за эти падения пропускной способности / увеличение времени отклика или нет?

Если нет, то, скорее всего, существует некоторая проблема с операциями, но здесь нет необходимости в умозрительных ответах.

Ответы [ 2 ]

2 голосов
/ 20 января 2012

Другой вариант заключается в том, что пул приложений в IIS настроен на перезапуск, если он занимает более X МБ личной памяти, или содержит более Y запросов, или даже перезапускает каждые Z минут ...

в этомслучай, может быть, то, что вы видите, это переработка вашего пула приложений.

0 голосов
/ 20 июня 2016

Да, сборка мусора всегда будет вызывать паузы при выполнении всех потоков в процессе. Этот поток может быть короче или длиннее, в зависимости от того, какой режим сборки мусора вы используете, и объема выделенной памяти, который используется для последующих поколений.

Для количественного определения количества времени, которое вы проводите в своих сборках мусора, я бы рекомендовал использовать PerfView для сбора и анализа метрик сбора мусора.

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

...