2010-09-26 1 views
5

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

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

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

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

+0

Не могли бы вы предоставить нам дополнительную информацию о загрузке сервера, когда это произойдет, включая использование как процессора, так и использования памяти? Обычно я ищу взаимоблокировки ресурсов или тайм-ауты, когда запросы внезапно начинают принимать более 30 секунд. – sisve

+2

Эти типы вопросов действительно трудно ответить. Что такое оборудование? Сколько пользователей веб-сервера? Точно, сколько данных в сеансе (вы можете количественно определить «много из них») на пользователя? Сколько пользователей SQL-сервера? Различия в пропускной способности платформ/аппаратных средств/сети и около миллиона других факторов (плохой код, низкая архитектура, время суток, балансировка нагрузки, кэширование и т. Д. И т. Д.) Могут повлиять на производительность. Какая среда такая? –

+0

В каком режиме сеансового состояния вы используете? то есть inproc, sqlserver или stateerver? Последние два будут использовать больше ресурсов, чем первые, хотя и более устойчивы. –

ответ

0

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

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

0

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

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

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

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

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

1

В одной из хранимых процедур в реализации .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

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

Некоторые из них упомянуты в What Are Some Good .NET Profilers?

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

0

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

0

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

<trace enabled="true" /> 

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

 Смежные вопросы

  • Нет связанных вопросов^_^