Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Вопрос общий по серверу  [new]
andrew shalaev
Member

Откуда: Moscow
Сообщений: 610
Доброго времени суток!

Тех хар-ки сервера:

СУБД: Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86) Nov 24 2008 13:01:59 Copyright (c) 1988-2005 Microsoft Corporation Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)

На данный момент СУБД сервер хоститься на виртуалке, под него выделено:

8 ядер 2,67 Ghz Intel xeon X5650
8 Гб оперативы
СХД HP EVA под файлы БД.

На сервере стоит одна высоконагруженная БД. Всего в ней работают порядка 1500 пользователей, одновременно сидят около 400-500

БД разбита на несколько файловых групп, по которым разнесены самые большие таблицы, не кластерные индексы.

Размер БД около 100Гб
Размер самой большой таблицы 10 ГБ (порядка 40 млн записей) она же и самая интенсивно использующаяся

На данный момент имеются проблемы с блокировками:


Wait type Wait time (s) % waiting
PAGEIOLATCH_SH 3383388 28.14
BROKER_TASK_STOP 1878735 15.62
SQLTRACE_BUFFER_FLUSH 1872751 15.57
SOS_SCHEDULER_YIELD 1662563 13.83
ASYNC_NETWORK_IO 462001 3
THREADPOOL 394427 3
WAITFOR 340245 2
OLEDB 301329 1

23 мар 12, 15:47    [12302936]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос общий по серверу  [new]
andrew shalaev
Member

Откуда: Moscow
Сообщений: 610
Щас еще напишу :)
23 мар 12, 15:48    [12302948]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос общий по серверу  [new]
andrew shalaev
Member

Откуда: Moscow
Сообщений: 610
База данныхЛогическое имяПрочитано (Мб)Записано (Мб)Путь к файлу
big dbABS3_0323964187175744E:\Database\FM\FM_03.ndf
big dbABS3_017244621534703E:\Database\FM\FM_01.mdf
big dbABS3_053833532604474E:\Database\FM\FM_05.ndf
big dbABS3_04276452371195E:\Database\FM\FM_04.ndf
big dbABS3_log974604967403E:\Database\FM\FM_log.ldf
big db.ABS3_0222172875727E:\Database\FM\FM_02.ndf
tempdbtemplog599796620C:\Program Files (x86)\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\templog.ldf
big dbABS3_06402421E:\Database\FM\FM_06.ndf



Средняя загрузка процессора = 90%
Счетчик средней очереди длины диска Е:\ в пики достигает 3000, а среднее значение при нагрузке на сервер - 200-300

На лицо явная нехватка ресурсов ввода\вывода. Процов обещают добавить, но СХД уже загружена до 100%

Варианты развития следующие:
1. Могут привезти на тесты полку для СХД с ssd дисками, что я думаю, значимо улучшит ситуацию
2. Переходить с виртуалок на железо

Если идти по 2-му варианту то какое железо нужно под такую БД (конечно с запасом прочности на производительнсть)

Кто, что посоветует в данной ситуации?
23 мар 12, 16:00    [12303056]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос общий по серверу  [new]
andrew shalaev
Member

Откуда: Moscow
Сообщений: 610
Еще добавлю, что судя по счетчикам, оперативной памяти для сервера хватает, счетчик Memory:Pages/sec почти всегда равен 0
23 мар 12, 16:02    [12303074]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос общий по серверу  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
Для начала почитать
Локализация проблем производительности .
23 мар 12, 16:31    [12303304]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос общий по серверу  [new]
andrew shalaev
Member

Откуда: Moscow
Сообщений: 610
Jovanny,

Что касается выявления узких мест, то имхо, они выявлены - IO и ЦП
По поводу оптимизации запросов, то работа в этом плане ведется, профайлер отлавливает тяжелые процедуры и они анализируюся, почти все select иcпользуют выражение (nolock index = )
23 мар 12, 16:38    [12303376]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос общий по серверу  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
andrew shalaev,

Я бы сначала посоветовал оптимизировать базу. Наличие необходимых индексов и статистик может в корне изменить ситуацию.
А хинт index вообще не рекомендую использовать.
23 мар 12, 16:45    [12303441]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос общий по серверу  [new]
andrew shalaev
Member

Откуда: Moscow
Сообщений: 610
Jovanny,
Статистика обновляется автоматически, индексы добавляются, по мере анализирования тяжелых процедур. Почему не надо использовать подсказку по индексу?
23 мар 12, 16:51    [12303490]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос общий по серверу  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 35394
Блог
andrew shalaev,

Потому что может так измениться распределение значений в поле таблицы, что дешевле будет просканировать ее всю.
23 мар 12, 17:19    [12303703]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос общий по серверу  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 35394
Блог
PAGEIOLATCH_SH - перейти на версию 2008+ и включить сжатие таблиц
SQLTRACE_BUFFER_FLUSH - перенести приемник трассы на более быстрый диск, возможно на RAM-диск
23 мар 12, 17:22    [12303726]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос общий по серверу  [new]
Eagle_84
Member

Откуда: Москва
Сообщений: 1535
andrew shalaev
Кто, что посоветует в данной ситуации?


виртуализация СУБД зло (с) - слова Александра Гладченко

вот еще

от себя добавлю, вы бы конфигурацию по RAID-ам написали и отказывались бы от виртуализации для MS SQL ;)
кстати, почему так мало оперативки 8 Гб? система 32 или 64?

что вернет?

select cntr_value/1024 memory from sys.sysperfinfo 
where counter_name = 'Total Server Memory (KB)'
23 мар 12, 17:24    [12303739]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос общий по серверу  [new]
andrew shalaev
Member

Откуда: Moscow
Сообщений: 610
Eagle_84,

Система 64-х битная, на СУБД выделено 6000Мб, собственно как уже писал, судя по счетчикам оперативки хватает
23 мар 12, 17:31    [12303785]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос общий по серверу  [new]
Crimean
Member

Откуда:
Сообщений: 13147
andrew shalaev
судя по счетчикам оперативки хватает


а по каким, если не секрет? нехватка озу может быть очень трудно диагностируема
а 6 гиг озу с таблицами по 10 гиг и невнятной стратегией индексирования может быть очень мало
автоматическое обновление статистики - миф, неэффективно
насколько "точный" контроль за фрагментацией индексов?
23 мар 12, 17:36    [12303818]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос общий по серверу  [new]
andrew shalaev
Member

Откуда: Moscow
Сообщений: 610
Crimean,

Индексы раз в день полностью перестраиваются. По поводу актуальности статистики то сужу еще и по плану выполнения запроса, планируемые данные совпадают с действительными. По поводу оперативной памяти ориентировался только по счетчику Memory:Pages\sec который почти всегда равен нулю.
23 мар 12, 17:47    [12303879]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос общий по серверу  [new]
Xotabach
Member

Откуда:
Сообщений: 5
Скорее всего очередь на диск создается силами всех соседей по серверу.
Т.е. ваш логический диск Е: виртуалки делит физическое устройство с другими виртуалками, которые дают на него нагрузку.
23 мар 12, 18:07    [12303979]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос общий по серверу  [new]
Crimean
Member

Откуда:
Сообщений: 13147
эээ... боюсь быть неверно понятым, но - виртуалке с сиквелом физические диски не отдали в монопольное владение? и при этом tempdb осталась по умолчанию на системном диске?
23 мар 12, 18:17    [12304023]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос общий по серверу  [new]
Xotabach
Member

Откуда:
Сообщений: 5
Да, я бы провентилировал этот вопрос с хостингом
23 мар 12, 18:24    [12304055]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос общий по серверу  [new]
Glamorama
Member

Откуда:
Сообщений: 152
1. А Вы уверены, что Win у вас 64-bit? SQL Server-то у Вас 32-bit
2. EVA у Вас как сконфигурирована? Отдельная RAID-группа выделена под БД или все диски общие? Какой VRAID используете? Какая вообще модель у EVA, какие диски и сколько штук?
3. Очередь к дискам стабильно высокая или есть явно выраженные пики?
4. Какие счетчики стоит смотреть - можно почитать здесь https://www.sql.ru/articles/mssql/03121001perf_counters.shtml
5. Может в двух словах опишите, что за система у Вас так грузит сервер? Если много монструозных аналитических отчетов и расчетов, то может быть действительно ресурсов не хватает.
6. "индексы добавляются, по мере анализирования тяжелых процедур" - чем пользуетесь для анализа процедур и выявления недостающих индексов?
23 мар 12, 18:56    [12304192]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос общий по серверу  [new]
andrew shalaev
Member

Откуда: Moscow
Сообщений: 610
Увеличили количество ядер до 12-ти. Нагрузка на ввод\вывод упала, очереди процессоров уменьшились. Все таки есть плюсы виртуализации, хотя бы в масштабировании мощности.
27 мар 12, 09:47    [12318327]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос общий по серверу  [new]
Slava_Nik
Member

Откуда: из России
Сообщений: 901
Критик
PAGEIOLATCH_SH - перейти на версию 2008+ и включить сжатие таблиц
SQLTRACE_BUFFER_FLUSH - перенести приемник трассы на более быстрый диск, возможно на RAM-диск

какое сжатие страниц, у него и так CPU загружено на 90%.
27 мар 12, 10:57    [12318800]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос общий по серверу  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
andrew shalaev
Почему не надо использовать подсказку по индексу?

Потому что в большинстве случаев оптимизатор сервера, при наличии обновленной статистики, в 90% случаев умнее среднестатистического разработчика, а также отслеживает изменения в распределении данных более регулярно чем DBA.

andrew shalaev
По поводу оперативной памяти ориентировался только по счетчику Memory:Pages\sec который почти всегда равен нулю.

Это примерно как диагностировать перелом при помощи градусника.
Забудьте про этот счетчик вообще. Посмотрите хотя бы PLE. У вас на лицо ЯВНАЯ нехватка RAM:
1. 6Гб это очень мало
2. 32х битная система. AWE включено? Сколько сервер РЕАЛЬНО использует вы смотрели?
3. Насколько я знаю VM любит просить память у ОС обратно, на всякий случай, та в свою очередь просит у сервера, а сервер, если не сконфигурирован правильно - отдаёт без разговоров. Рекомендую проверить этот аспект.

andrew shalaev
Увеличили количество ядер до 12-ти. Нагрузка на ввод\вывод упала, очереди процессоров уменьшились.

Я бы на вашем месте сильно не радовался. И вообще, если при увеличении количества CPU улучшается производительность дисковой подсистемы, это какой то странный признак. Вы смотрели чем именно загружен проц на 90%? Это точно SQL Server процесс? Так на всякий случай, что говорит Processor:% Privileged Time?
27 мар 12, 23:19    [12324126]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос общий по серверу  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Критик
SQLTRACE_BUFFER_FLUSH - перенести приемник трассы на более быстрый диск, возможно на RAM-диск

Там памяти и так мало, а вы предлагаете еще откушать на RAM-disk?
27 мар 12, 23:21    [12324129]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос общий по серверу  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Eagle_84
andrew shalaev
Кто, что посоветует в данной ситуации?


виртуализация СУБД зло (с) - слова Александра Гладченко

Вы просто не умеете их готовить (с)
Есть другие, не менее авторитетные мнения на этот счёт:
http://www.brentozar.com/community/virtualization-best-practices/
27 мар 12, 23:23    [12324145]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос общий по серверу  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Glamorama
4. Какие счетчики стоит смотреть - можно почитать здесь https://www.sql.ru/articles/mssql/03121001perf_counters.shtml
Я бы сказал что это руководство немного устарело и требует обновления.
27 мар 12, 23:25    [12324159]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос общий по серверу  [new]
SamMan
Member

Откуда: Moscow
Сообщений: 759
Mind
Вы просто не умеете их готовить


Так научите, ждем.

Mind
Есть другие, не менее авторитетные мнения на этот счёт


Причем один из посылов этих "других":

Virtualize only when it’s going to solve a problem, and you don’t have a better solution for that problem.


что, в моем вольном переводе будет:

я сам
Используйте виртуализацию только (only) как крайний шаг выхода из тупика.
28 мар 12, 10:15    [12325097]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить