Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 I/O на TempDB, нужна помощь  [new]
А.Панков
Member

Откуда: Toronto
Сообщений: 523
@version = Microsoft SQL Server 2000 - 8.00.2039 (Intel X86)

Провели upgrade продакшен сервера и его дисков, поставили самые последние наворочанные storages. Windows оставили '2000 server', поскольку нельзя было переставить кое-какой софт на 2003. Сиквел тоже 2000.

Начались проблемы с I/O на TempDB, такого плана:
SQL Server has encountered 12479 occurrence(s) of IO requests taking longer than 15 seconds to complete on file [d:\MSSQL\DATA\tempdb.mdf] in database [tempdb] (2).  
The OS file handle is 0x000005CC.  The offset of the latest long IO is: 0x000000d4ce0000

Счетчик 'avg. IO length' = 4408 на три шпинделя.

Tempdb.dbf уже стоит на отдельном RAID 10, как утверждает DELL, самом быстром что только есть. Проблема переехала на диск вместе с ним. Что интересно, такая же система стоит на нашем другом сайте, те же программы, железо намного победнее - там никаких задержек.

Сообщение было отредактировано: 27 окт 09, 00:32
26 окт 09, 21:38    [7841178]     Ответить | Цитировать Сообщить модератору
 Re: I/O на TempDB, нужна помощь  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36808
Ммм, рейд 10 на трех шпинделях? Это как?
27 окт 09, 00:31    [7841561]     Ответить | Цитировать Сообщить модератору
 Re: I/O на TempDB, нужна помощь  [new]
Александр Волок (def1983)
Member

Откуда: Rotterdam
Сообщений: 4959
Проверьте производительность массива с помощью SQLIO, возможно аппаратная проблема.

Был у меня случай, когда dell'овский сан из-за сырых драйверов выдавал 10-20 МБ/с на чтении, и очередями под 600
27 окт 09, 11:12    [7842988]     Ответить | Цитировать Сообщить модератору
 Re: I/O на TempDB, нужна помощь  [new]
А.Панков
Member

Откуда: Toronto
Сообщений: 523
На 4 шпинделях конечно, извиняюсь.
Короче, DELL support оттестировал диски, все там круто. Продакшен база у нас была самая тяжелая, так она чирикает на 5 процентах CPU и 0.01 disk queue length.
Перетащили tempdb на другой storage под другим контроллером, оставили одну на целом драйве - проблема переехала вместе с tempdb.
Дальше попробовали ускорить tempdb с помощью trace flag T1118 и создания 8 одинаковых по размеру дата файлов (по числу процессоров - у сервера 4 камня по 2 ядра), как описано здесь: http://support.microsoft.com/kb/328551 - это улучшило ситуацию, что продакшен смог работать, слегка подвисая, но IO errors сыплются каждые пять минут, хоть количество "occurence(s)" уменьшилось.
Заказал на завтра MS support, пусть посмотрят настройки сервера и скуля, мож я неправильно что сконфигурировал в самом начале...
Какие еще идеи?
30 окт 09, 02:57    [7859584]     Ответить | Цитировать Сообщить модератору
 Re: I/O на TempDB, нужна помощь  [new]
А.Панков
Member

Откуда: Toronto
Сообщений: 523
А еще, кто нибудь знает как профайлером в 2000-м sql server посмотреть что происходит на tempdb? Ничего не показывает, зараза.
30 окт 09, 02:59    [7859586]     Ответить | Цитировать Сообщить модератору
 Re: I/O на TempDB, нужна помощь  [new]
aleks2
Guest
А.Панков
Какие еще идеи?


Прикрутить полдюжины обычных SATA дисков на контроллер материнки и водрузить TEMPDB на их.
30 окт 09, 08:23    [7859714]     Ответить | Цитировать Сообщить модератору
 Re: I/O на TempDB, нужна помощь  [new]
MsDatabaseru
Member

Откуда: Hobby.MsDatabase.ru
Сообщений: 10937
А.Панков
На 4 шпинделях конечно, извиняюсь.
Короче, DELL support оттестировал диски, все там круто. Продакшен база у нас была самая тяжелая, так она чирикает на 5 процентах CPU и 0.01 disk queue length.
Перетащили tempdb на другой storage под другим контроллером, оставили одну на целом драйве - проблема переехала вместе с tempdb.
Дальше попробовали ускорить tempdb с помощью trace flag T1118 и создания 8 одинаковых по размеру дата файлов (по числу процессоров - у сервера 4 камня по 2 ядра), как описано здесь: http://support.microsoft.com/kb/328551 - это улучшило ситуацию, что продакшен смог работать, слегка подвисая, но IO errors сыплются каждые пять минут, хоть количество "occurence(s)" уменьшилось.
Заказал на завтра MS support, пусть посмотрят настройки сервера и скуля, мож я неправильно что сконфигурировал в самом начале...
Какие еще идеи?


разнесите теперь эти 8 файлов на 8 раид 0 контроллеров по максимально возможному числу шпинделей в каждом
30 окт 09, 11:05    [7860500]     Ответить | Цитировать Сообщить модератору
 Re: I/O на TempDB, нужна помощь  [new]
a_shats
Member

Откуда: Москва
Сообщений: 814
MsDatabaseru,

Жесть Вы так всегда делаете ?

А.Панков

Если tempdb лежит на отдельном массиве - что в перфмоне на тему Reads/sec, Writes/sec ?
Очередь, описанная в Вашем посте - очень велика.
30 окт 09, 11:09    [7860528]     Ответить | Цитировать Сообщить модератору
 Re: I/O на TempDB, нужна помощь  [new]
pr0ger
Member

Откуда: Москва
Сообщений: 1933
Действительно ли на tempdb так много дисковых операций или всё же массив тормозит? Попробуйте выполнить следующий скрипт:
SELECT db_name(fs.dbid),f.name, f.filename, fs.NumberReads, fs. NumberWrites, fs. BytesRead, fs.BytesWritten, fs.IoStallMS
FROM ::fn_virtualfilestats(DEFAULT, DEFAULT ) fs
join sysaltfiles f on f.dbid= fs.dbid and f.fileid=fs.fileid
30 окт 09, 11:17    [7860595]     Ответить | Цитировать Сообщить модератору
 Re: I/O на TempDB, нужна помощь  [new]
baracs
Member

Откуда: Москва
Сообщений: 7198
А.Панков
А еще, кто нибудь знает как профайлером в 2000-м sql server посмотреть что происходит на tempdb? Ничего не показывает, зараза.

А он какие события "смотрит"?
30 окт 09, 11:26    [7860669]     Ответить | Цитировать Сообщить модератору
 Re: I/O на TempDB, нужна помощь  [new]
MsDatabaseru
Member

Откуда: Hobby.MsDatabase.ru
Сообщений: 10937
a_shats
MsDatabaseru,

Жесть Вы так всегда делаете ?

А.Панков

Если tempdb лежит на отдельном массиве - что в перфмоне на тему Reads/sec, Writes/sec ?
Очередь, описанная в Вашем посте - очень велика.


увеличение числа контроллеров по деньгам
выбор рэйд 0 по требованиям к отказоустойчивости и допустимости кратковременных простоев
30 окт 09, 11:36    [7860783]     Ответить | Цитировать Сообщить модератору
 Re: I/O на TempDB, нужна помощь  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36808
Распилите tempdb на файлы, что бы их было как минимум, как процессоров.
30 окт 09, 11:45    [7860910]     Ответить | Цитировать Сообщить модератору
 Re: I/O на TempDB, нужна помощь  [new]
MsDatabaseru
Member

Откуда: Hobby.MsDatabase.ru
Сообщений: 10937
размер страйпа рэйда, размер кластера с которым отформатирован раздел, какие кеши есть, наличие батарейки - не написали, разумеется вы выбрали оптимальные значения, но всеже при подобных обсуждениях было бы логично в первом посте все детально указать.

в случае допустимости рэйда 0 применительно к вашей системе под темпдб позволило бы увеличить скорость записи почти в разы по сравнению с 10 уровнем. но опять же требований к отказоустойчивости вашей системы небыло
30 окт 09, 11:45    [7860917]     Ответить | Цитировать Сообщить модератору
 Re: I/O на TempDB, нужна помощь  [new]
Crimean
Member

Откуда:
Сообщений: 13148
перепроверяйте размеры файлов tempdb
для них под 2000 можно поставить только фиксированные прирост / размер, иначе все слетает
бага в 2000 EM, так и не исправленная
в итоге ваш дележ tempdb на файлы перестает работать
30 окт 09, 22:34    [7865277]     Ответить | Цитировать Сообщить модератору
 Re: I/O на TempDB, нужна помощь  [new]
Eugene_p1
Member

Откуда: Москва
Сообщений: 295
pr0ger
Действительно ли на tempdb так много дисковых операций или всё же массив тормозит? Попробуйте выполнить следующий скрипт:
SELECT db_name(fs.dbid),f.name, f.filename, fs.NumberReads, fs. NumberWrites, fs. BytesRead, fs.BytesWritten, fs.IoStallMS
FROM ::fn_virtualfilestats(DEFAULT, DEFAULT ) fs
join sysaltfiles f on f.dbid= fs.dbid and f.fileid=fs.fileid


Я выполнил на своих базах.
dbnamefilenameDbIdFileIdTimeStampNumberReadsNumberWrites BytesRead BytesWritten IoStallMS
db01 dbemlog$ f:\Data\db01_log.LDF 8 2 339 892 500 32 845 8 047 470 1 942 307 840 13 891 565 056 657
db01 dbem$DataE:\Data\db01$.mdf 8 1 339 892 500 11 906 339 3 929 512 895 204 933 632170 421 641 216 30 794 498
tempdb tempdev d:\MSSQL\data\tempdb.mdf 2 1 339 892 500 2 365 808 2 483 156 149 126 135 808 158 560 002 048 2 973
tempdb templog d:\MSSQL\data\templog.ldf 2 2 339 892 500 1 205 561 362 62 795 264 32 693 628 928 550

У одной IoStallMS очень высокий. О чем это свидетельствует?
2 ноя 09, 13:26    [7870732]     Ответить | Цитировать Сообщить модератору
 Re: I/O на TempDB, нужна помощь  [new]
MsDatabaseru
Member

Откуда: Hobby.MsDatabase.ru
Сообщений: 10937
то что именно эта база суммарно потратила больше всего времени на ожидание отклика от IO на операции чтения и записи
2 ноя 09, 14:47    [7871372]     Ответить | Цитировать Сообщить модератору
 Re: I/O на TempDB, нужна помощь  [new]
А.Панков
Member

Откуда: Toronto
Сообщений: 523
Гавриленко Сергей Алексеевич
Распилите tempdb на файлы, что бы их было как минимум, как процессоров.

Сделал, и флаг T1118 поставил, только поэтому бизнес еще не встал, с трудом, но шевелится.
И фиксированный прирост тоже сделал.

А вообще-то, уже разобрались. Там реально идет ненормальное количество IO. Нашли баг в софте, который крутится на продакшен. Так совпало, что кривой select наложился на значительное увеличение записей, как перескочило через определенный порог, так и пошло увеличение IO по экспоненте. А совсем даже не сиквел виноват:)

Всем спасибо, закрыто.
2 ноя 09, 23:59    [7874072]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить