Наш веб-сайт ASP.Net использует SQL Server в качестве поставщика состояния сеанса. В настоящее время мы размещаем базу данных на SQL Server 2005, поскольку она не работает на 2008 R2. Мы хотели бы знать, почему и как это исправить.
настройка оборудования На нашем текущем сервере состояния сеанса установлен SQL Server 2005 с файлами, размещенными на одном локальном диске. Это один из наших самых старых серверов, поскольку он хорошо нам служил, и мы никогда не чувствовали необходимости его обновлять. База данных составляет около 2 ГБ на 6000 сеансов. (Сеансы немного велики, но нам это нужно.) У нас есть еще один сервер с SQL Server 2008 R2 с гораздо более быстрым процессором и гораздо большим объемом оперативной памяти. редактировать: Я солгал о гораздо более быстром диске. Более старый сервер имеет один диск SAS 15 КБ 36 ГБ. Новый сервер имеет зеркало raid 1 из 15 Кбайт с 136 Гбайт свободного места.
ситуация Однажды у нас наблюдается огромный скачок трафика. Рост журнала транзакций на SQL Server приводит к зависанию сервера на 10 секунд, позволяя выполнить лишь несколько запросов за несколько минут. Итак, мы загружаем новый сервер с помощью ASPState с очень большими файлами данных и журналов и направляем все наши приложения на новый сервер. Он работает нормально около 5 минут, а затем загрузка ЦП увеличивается до 50% из 16 ядер, которые может использовать Standard Edition, и зависает на 10 секунд за раз. В файлах не записываются события автоматического роста. Дисковая очередь хорошая и небольшая. Использование ОЗУ низкое.
Использование ЦП на нашем старом сервере никогда не превышало 5%. Что случилось на новом сервере?
В качестве альтернативы я хотел бы услышать истории успеха с сервером состояния сеанса ASP.NET, работающим на SQL Server 2008 R2 со средней нагрузкой записи 30 МБ / с с пакетами до 200 МБ / с.
Ваш первый сервер с SQL Server 2005 вёл себя нормально при значительном увеличении журнала транзакций. Есть уловки, которые можно использовать для увеличения скорости роста файла mdf, но не ldf.
Я не уверен, что сказать вам о вашем втором сервере, основываясь на информации выше. Однако дисковая очередь, вероятно, не та метрика, которую вы здесь ищете. Вероятно, вам понадобится счетчик Perfmon Logical Disk: Avg. Disk sec / Write или его эквивалент, а оптимальные (средние) значения для файлов ldf - 5 мс или меньше.
Я собираюсь предположить, основываясь на «гораздо более быстром жестком диске», что вы не используете RAID. Возможно, несмотря на номер очереди диска, вы испытываете давление записи на диск. Вы также можете столкнуться с ожиданием защелки или блокировки.
Вот запрос, который поможет диагностировать ожидания:
http://www.brentozar.com/responder/triage-wait-stats-in-sql-server/