Производительность сеанса ASP.NET - PullRequest
5 голосов
/ 26 сентября 2010

У меня проблемы с производительностью в приложении asp.net. Иногда для выполнения команды клиенту требуется 30-40 секунд, а иногда - 3-4 секунды. Я пробовал SQL Profiler и не вижу проблем. Я не смог повторить проблему со своей стороны, по тому же сценарию, когда клиент пытался.

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

Если я уберу их, это поможет? и если да, то повлияет ли это на других пользователей. Или это понятно только для этого пользователя?

Любая помощь приветствуется.

Ответы [ 6 ]

1 голос
/ 27 сентября 2010

В одной из хранимых процедур в реализации .NET 2.0 хранилища сеансов на основе SQL Server возникла проблема с блокировкой записи. Похоже, что MS включила исправление в выпуск .NET 4.0.

Взгляните сюда: http://sanjevsharma.blogspot.com/2008/03/improving-aspnet-session-state-database.html

Я на 99% уверен, что вы можете запустить версию aspnet_regsql -ssadd 4.0 и при этом запустить ASP.NET 2.0 для нее. Я помню, как выполнял различие между сценариями SQL 2.0 и 4.0, и единственное реальное отличие заключалось в вышеуказанном исправлении. Реализация MS исправления была немного лучше (и явно основана на) ссылке выше.

0 голосов
/ 16 октября 2010

Вы пробовали включить ведение журнала трассировки ASP.NET и просмотр времени загрузки в стек вызовов?Я использовал это совсем немного для диагностики узких мест в производительности ASP.NET.Если вы не знакомы с trace.axd, вы можете включить его через файл конфигурации

<trace enabled="true" />

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

0 голосов
/ 05 октября 2010

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

0 голосов
/ 01 октября 2010

Если проблема не в вашей базе данных, вы можете попробовать профилировать ваше веб-приложение и посмотреть, где узкие места.Трудно воспроизвести переменные проблемы, как вы видите на производстве (задержки 4-40 секунд), но результаты того, сколько вызовов методов происходит и какие из них потребляют больше всего времени выполнения, могут дать подсказку.

Некоторые упоминаются в Что такое хорошие профилировщики .NET?

Лично я большой поклонник профилировщика EQATEC.

0 голосов
/ 26 сентября 2010

Предположим, что ASP.NET Session не будет влиять на время вашего обхода SQL Server при нормальной работе. Предполагая, что в сеансе не хранится ничего, связанного с вашим уровнем данных (то есть статические объекты SqlConnection)

Если вы видите эти длинные промежутки времени (30-40 секунд), попробуйте определить, является ли производительность постепенным замедлением или время вашего обращения к SQL Server является случайным.

Рассмотрите возможность ведения журналов, чтобы помочь определить шаблон. Начните с записи на диск, один файл в день / час, как вы считаете целесообразным.

  • время начала выполнения команды SQL. Зарегистрируйте запрос / набор данных / релевантную информацию, которую вы передаете.
  • время окончания команды SQL.
 --- Executing statement SELECT * FROM Customers
 --- Start 08:55.44
 --- End   08:55.45 
 === Roundtrip was 1 second  SELECT * FROM Customers

Через час / день / неделю откройте журналы, чтобы найти «Roundtrip», и, возможно, напишите программу, которая проанализирует эти журналы для вас.

0 голосов
/ 26 сентября 2010

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

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

...