2012-06-27 1 views
0

У меня проблема прерывания с одной областью моего приложения, где она начинает работать медленно. Приложение ASP.Net + с SQL Server. Мы случайно обнаружили, что внесение любых изменений в «максимальную память сервера» на SQL-сервере, вверх или вниз, немедленно остановит проблему.Почему сокращение «максимальной памяти сервера» в SQL Server повышает производительность моего приложения?

Проблемная область довольно динамична и одновременно обновляется многими потоками, поэтому моя лучшая предпосылка, объясняющая это, является некоторой проблемой взаимоблокировки в БД. К сожалению, это происходит очень редко, только в живой системе, и когда это происходит, мы должны быстро ее исправить. Поскольку нет возможности для «копания», я хочу сузить свой поиск, и эта странность кажется ключом.

Я искал это и посмотрел в «Books Online», поэтому я знаю, что «максимальная память сервера» не является параметром, требующим перезапуска. То, что я не могу найти, - это подробное описание того, что происходит, когда RECONFIGURE называется «под капотом».

Я надеюсь, что кто-то здесь знает или может указать мне на более подробный ресурс. Чтобы быть ясными, я не прошу общих советов, поэтому, пожалуйста, старайтесь оставаться конкретными. Спасибо :)

Update:

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

+0

Не могли бы вы рассказать нам что-нибудь о вашем оборудовании? Это звучит просто как сервер sql, питающийся всей памятью, и asp.net теряют пространство для передышки, потенциально начинают меняться (что медленно замедляется) – TomTom

+0

Привет, спасибо за идею, но я думаю, что это вряд ли станет причиной. Фактический сайт работает на другой машине, а SQL-сервер сам по себе. – OlduwanSteve

ответ

2

У вас проблема с производительностью, и вы должны подойти к ней, исследуя производительность, а не guessing. Следуйте методологии устранения неполадок производительности, например Waits and Queues, чтобы определить узкое место, а затем предпримите соответствующие действия в зависимости от , указанной.

Что касается ваших предположений о «внутренних тупиках», они являются ... креативными. Более реалистичным объяснением было бы то, что, возившись с настройками сервера, вы щелкаете clock hands, которые выселяют ваш bad plan.

+0

Привет, не могли бы вы расширить «щекотание часами»? Почему увеличение доступной памяти приведет к немедленному выселению плана запроса? – OlduwanSteve

+0

Запустите 'select ... from sys.dm_exec_cached_plans'. Внесите любое изменение в 'max server memory'. Запустите снова 'select ... from sys.dm_exec_cached_plans'. [Сюрприз!] (Http://www.youtube.com/watch?v=0Bmhjf0rKe8) QED –

+0

С серьезной записью: планы стоят во время оптимизации, учитывая множество факторов *, включая доступную память *. Совершенно очевидно, что если «максимальная память сервера» каким-либо образом изменена, все планируются как недействительные и принудительно перекомпилируют * в новых условиях памяти *. –

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