|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Ситуация следующая. Имеем учетную систему на базе MS SQL Server. База крутится на DL380 G6. Две корзины по 8 дисков каждая. Каждая на своем контроллере P410 с памятью и батарейкой. Система RAID1 2xSAS15K ФайлБД1 RAID10 4xSAS15k ФайлБД2 RAID1 2xSSD MLC ФайлБД3 RAID10 4xSAS15k Log и TempDB RAID10 4xSAS15k Итого все слоты заняты. Специфика такова, что чтобы что-то изменить в хранилище - нужно ждать останова производства, а это бывает очень редко. Производство круглосуточное. Остановить сервер я могу на час или на два максимум. Имеем. Все работает нормально, быстро и т.п., но после запуска новой очень сложной системы посекционного учета получили тормоза у всех пользователей, которые работают с этим блоком. За три месяца в программе оптимизировано все что только можно (будем считать что оптимизировать программу уже некуда). Пользователям всем обновлены компьютеры, переведены на гигабит, проведен анализ узких мест. После этого некоторая стабильность появилась, но нет роста скорости работы. Просто вот выполняется операция 10 секунд, а нужно чтобы выполнялась 1 секунду. Насколько я могу судить - просто не хватает скорости работы дисковой системы. Пример. Есть запрос по остаткам - на пустом сервере выполняется 8 секунд, на загруженном в обычном режиме 20, а нужно чтобы выполнялся за 2. Анализ всех узких мест по счетчикам и т.п. показывает что все ништяк. Грешу на дисковую систему. Теперь самое интересное - как с минимальными затратами протестировать - а правда ли что модификация дисковой подсистемы даст значительный прирост производительности. Самый классный вариант - это взять в опытно-промышленную эксплуатацию СХД на 24xSAS15k, забить ее ими, сделать RAID10, положить туда базу и посмотреть что произойдет с реальной производительностью. Если она действительно скаканет - купить эту полку. Подкинуть полку и перенести на нее базы это дело нехитрое и не требует останова производства. Имеется DL380 G7 (резервный сервер). На нем винты под систему 2xRAID1, плюс скоро придут еще 8xSAS15K. Общаюсь сейчас с поставщиком каким образом сделать чтобы G7 стал для основного G6-ого полкой чтобы протестировать скорость работы. Покритикуйте пожалуйста меня. Может быть есть какие-то другие способы для моего случая потестировать скорость работы базы на значительно бОльшем количестве шпинделей? Еще раз обращаю внимание что интересует рост скорости работы скажем так в десять раз, поэтому предложения по поводу того чтобы разложить Log и TempDB на разные диски - не интересны (по ним кстати по счетчикам и анализам проблем нет). Нужно что-то реально действенное, но дешевое на этапе тестирования. Купить мы можем и не дешевое, но нужно понять - будет ли реальный рост. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2012, 14:51 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Kaktus_, Имхо, нужно было это в подфорум по MS SQL писать. По моему опыту, когда говорят "в программе оптимизировано все что только можно", то там остался еще изрядный запас по оптимизации. Не обязательно в самой программе, а, может быть, в настройках СУБД. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2012, 15:07 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
miksoftKaktus_, Имхо, нужно было это в подфорум по MS SQL писать. По моему опыту, когда говорят "в программе оптимизировано все что только можно", то там остался еще изрядный запас по оптимизации. Не обязательно в самой программе, а, может быть, в настройках СУБД. Я поэтому и акцентирую внимание на том, что программно все что можно - все оптимизировано по максимуму. А даже если где-то и не оптимально, то оптимизация не даст роста производительности на порядок. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2012, 15:21 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Kaktus_miksoftИмхо, нужно было это в подфорум по MS SQL писать.все оптимизировано по максимуму. А даже если где-то и не оптимально, то оптимизация не даст роста производительности на порядок.Все равно лучше туда. Там подскажут как посмотреть узкие места в текущей работе. Может, вы вовсе не в диски упираетесь, а в CPU или в недостаток оперативки? С другими СУБД мне известны случаи, когда увеличение ОП и правильная настройка СУБД для использования увеличенного объема ОП давали многократное увеличение производительности. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2012, 15:36 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Kaktus_Еще раз обращаю внимание что интересует рост скорости работы скажем так в десять раз, поэтому предложения по поводу того чтобы разложить Log и TempDB на разные диски - не интересны (по ним кстати по счетчикам и анализам проблем нет).Так надо найти узнкое место... Во что упирается? Если не в Log и не в TempDB, то просто много чтений с файла базы? Чтения последовательные или случайные? Большими блоками или маленькими Из какого файла, из какого из ваших рэйдов? Очередь большая? Время отклика (Response Time) большое? Если затык в чтениях из файлов, может увеличить память (если есть возможность)? Kaktus_Общаюсь сейчас с поставщиком каким образом сделать чтобы G7 стал для основного G6-ого полкой чтобы протестировать скорость работы. Покритикуйте пожалуйста меня. Может быть есть какие-то другие способы для моего случая потестировать скорость работы базы на значительно бОльшем количестве шпинделей?Да что, идея хорошая, малыми силами потестировать... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2012, 17:05 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Kaktus_, Я не уверен, что заменой жестких дисков на жесткие диски можно разогнать правильную БД в 10 раз, разве что активное подмножество уляжется в подросшую суммарную буферную память дисков. Вы для начала проясните хотя бы размеры базы/активного подмножества и тип нагрузки --- OLTP и OLAP лечатся сильно по-разному. И как вообще установлено, что тормозит именно дисковая подсистема? Скажем, сильно ли растёт/уменьшается число иопсов если вы уменьшаете/увеличиваете размер дискового кэша в СУБД? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2012, 21:32 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
База данных является обычной учетной системой с 70-ю одновременными пользователями. Бухгалтерия, производственный учет, логистика и т.п. Пишу сюда, т.к. интересует именно дисковая система. В общем сервер сейчас выглядит так: Объем БД 100 Гб. Загрузка процессора около 17 процентов Память - Ввод/Вывод страниц в секунду как и должны быть ноль Кэш - Процент попаданий при отображении как и должен быть 100 процентов I\Oпсы - если суммирую обращения чтения и удвоенные обращения записи, делю на количество дисков, то для SSD и не превышает 3000 (Это поидее нормально для HP MLC SSD), а для SAS15K не превышает 300, что для них тоже вроде бы нормально. Среднее время чтения/записи изредка доходит по некоторым дискам до 15мс, а так 2мс. Очереди по дискам примерно одинаковые. Подскакиваеют до 20-50 пиками. Пики длиной около 5-7 секунд. Расстояние между пиками около 30 секунд. Распределение нагрузки по дискам (суточная): Система RAID1 2xSAS15K - Чтение 12 Гб, запись 0.1 Гб (тут лежит только mdf) ФайлБД1 RAID10 4xSAS15k - Чтение 700 Гб, запись 5 Гб ФайлБД2 RAID1 2xSSD MLC - Чтение 1500 Гб, запись 1.5 Гб ФайлБД3 RAID10 4xSAS15k - Чтение 700 Гб, запись 0.2 Гб Log и TempDB RAID10 4xSAS15k - LogЧтение 2 Гб, LogЗапись 4 Гб, TempDBЧтение 52 Гб, TempDBЗапись 52 Гб. Большие объемы чтения связаны с тем, что каждые 15 минут формируется разностный бэкап. Полный делается раз в день. Разностный бэкап делается от 10 секунд первый до 3 минут последний, но не замечено никакой связи снятия разностного бэкапа и скорости работы системы. Разностный и полный бэкап уходят на сетевой диск. Итак. Получаем не шибко перегруженную систему (на мой взгляд). И работает она нормально. Но нужен значительный рост производительности на порядок. Опять же - сервер останавливать можно только на 1 час максимум чтобы что-то засунуть/высунуть/проверить. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2012, 15:50 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Kaktus_Большие объемы чтения связаны с тем, что каждые 15 минут формируется разностный бэкап. Полный делается раз в день. Разностный бэкап делается от 10 секунд первый до 3 минут последний, но не замечено никакой связи снятия разностного бэкапа и скорости работы системы.То есть диски и так не напрягаются, раз лишняя задача на отклик не влияет, верно? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2012, 16:04 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
iv_an_ruKaktus_Большие объемы чтения связаны с тем, что каждые 15 минут формируется разностный бэкап. Полный делается раз в день. Разностный бэкап делается от 10 секунд первый до 3 минут последний, но не замечено никакой связи снятия разностного бэкапа и скорости работы системы.То есть диски и так не напрягаются, раз лишняя задача на отклик не влияет, верно? Да, получается так. По крайней мере нет тенденции что увеличивается скажем так частота пиков счетчиков в 0,15,30,45 минут каждого часа. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2012, 16:21 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Можно перенести отчетность на отдельный сервер. Если не так радикально, то проверить версию MS SQL Server (сервиспаки), даты статистики, фрагментацию индексов, где можно - там подкрутить планы выполнения. Например, если у запроса формируется неверный план, то запрос может выполнятся очень-очень долго, но при этом практически не будет использовать ресурсы оборудования. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2012, 22:42 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Kaktus_Еще раз обращаю внимание что интересует рост скорости работы скажем так в десять раз , поэтому предложения по поводу того чтобы разложить Log и TempDB на разные диски - не интересны (по ним кстати по счетчикам и анализам проблем нет). Нужно что-то реально действенное, но дешевое на этапе тестирования. Купить мы можем и не дешевое, но нужно понять - будет ли реальный рост. В 10 раз. Вы фантазёр... 1. Сеть гигабитная? 2. Оперативы хватает? 3. Лишнее ПО на сервере установлено? 4. Камень на сервере каой? 5. Статистика по ночам считается? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2012, 15:05 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
KhodKaktus_Еще раз обращаю внимание что интересует рост скорости работы скажем так в десять раз , поэтому предложения по поводу того чтобы разложить Log и TempDB на разные диски - не интересны (по ним кстати по счетчикам и анализам проблем нет). Нужно что-то реально действенное, но дешевое на этапе тестирования. Купить мы можем и не дешевое, но нужно понять - будет ли реальный рост. В 10 раз. Вы фантазёр... 1. Сеть гигабитная? 2. Оперативы хватает? 3. Лишнее ПО на сервере установлено? 4. Камень на сервере каой? 5. Статистика по ночам считается? Сеть гигабитная. Оперативки 16 Гб. На базу 100 Гб. SQL по счетчикам кушает ее правильно всю. Лишнего ПО вообще ноль. Только антивирус (авира), которая вообще не замечена в съедании ресурсов. Процессора два XeonQC E5504 2ГГц Статистика обновляется по десятку основных таблиц каждую ночь. Хм. А может быть обновлять не по десятку таблиц, а по двум-трем. Т.е. расширить список таблиц, которые считаются основными. Кстати еще одна проблема специфичная. Реиндекс. Полный реиндекс базы идет 2 часа. А т.к. производство круглосуточное - остановить на 2 часа процесс нельзя. Но реиндекс не панацея и как показывала практика предыдущих лет когда работали не круглосуточно - делает работу более стабильной, но не дает прирост на порядок. Так вот насчет в 10 раз. Фишка в том, что компания готова платить за этот прирост деньги, но я не могу понять как определить узкое место. А может быть его и нет - может быть просто нужно брать новый мощный сервер с EVA. Но это значительные деньги для компании и компания пойдет на это, но при условии что будет обоснование и не окажется что скорость нового сервера такая же как и у старого. Дайте EVA на недельку. ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2012, 09:08 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Kaktus_Оперативки 16 Гб. На базу 100 Гб. SQL по счетчикам кушает ее правильно всю. Лишнего ПО вообще ноль. Только антивирус (авира), которая вообще не замечена в съедании ресурсов. Статистика обновляется по десятку основных таблиц каждую ночь. Хм. А может быть обновлять не по десятку таблиц, а по двум-трем. Т.е. расширить список таблиц, которые считаются основными. Кстати еще одна проблема специфичная. Реиндекс. Полный реиндекс базы идет 2 часа. А т.к. производство круглосуточное - остановить на 2 часа процесс нельзя. Но реиндекс не панацея и как показывала практика предыдущих лет когда работали не круглосуточно - делает работу более стабильной, но не дает прирост на порядок. Оперативу я всё-таки увеличил бы. Это не так дорого, а результат может возрасти. Антивируса быть вообще не должно. Просто должен быть закрыт доступ ко всему лишнему. Статистику не скажу. Тут нужно базу видеть Возможно, где-то в ней избыточность и/или она полностью не приведена к нормальной форме. Да и запросы можно попытаться оптимизироовать (иногда скорость возрастает сущестенно). Ну, реиндекс не так и нужен. Я бы поднял на одной из машин (хоть и рабочих станций) тестовую базу и поигрался таки бы со статистикой и запросами. Возможно, нужно сделать дефрагментацию таблиц (я больше знаком с информиксом, оттого и не могу сказать, если такое в мсскл). И напомледок. У вас как построение ПО: сервер ДБ -рабочие станции. Есть ли сервер приложений? Сколько серверов приложений? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2012, 09:20 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Kaktus_Большие объемы чтения связаны с тем, что каждые 15 минут формируется разностный бэкап. Полный делается раз в день.Не лучше каждые 15 минут делать вместо разностного бакапа бакап лога? Kaktus_Оперативки 16 Гб. На базу 100 ГбЕсли чтений много без учёта бакапов, то увеличение оперативки поможет Ну и собственно смотрите на запросы, которые вас не устраивают. Что вы упорно продолжаете решать проблемы, которых нет? Может, у вас проц не справляется при выполнении этих запрсов? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2012, 09:46 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Вобщем итого что решили сделать. 1. Купить 16 Гб памяти (сейчас на базу 100 Гб 16 Гб оперативки) и посмотреть что из этого получится. Цена вопроса 16 тыс рублей, поэтому проблем нет. 2. Ведем переговоры по поводу того чтобы взять полку (пусть даже и без винтов) в опытно-промышленную эксплуатацию на недельку чтобы протестировать возможное значительное увеличение количества шпинделей. 3. Пишем на форум о полученных результатах чтобы поделиться положительными ли отрицательными результатами. :) Ну и параллельно оптимизируем код, хотя и так уже дальше некуда, но совершенству нет предела. По поводу бэкапа лога - спасибо идею тоже рассмотрю. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2012, 16:53 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Kaktus_, Вот с памятью и гляненте результат. Хуже уж точно не будет. А насчёт оптимизации... Тот же режим конкетации таблиц может увеличить выполнение запроса в разы. А про результат услышать интересно будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2012, 17:14 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Kaktus_Вобщем итого что решили сделать. 1. Купить 16 Гб памяти (сейчас на базу 100 Гб 16 Гб оперативки) и посмотреть что из этого получится. Цена вопроса 16 тыс рублей, поэтому проблем нет. 2. Ведем переговоры по поводу того чтобы взять полку (пусть даже и без винтов) в опытно-промышленную эксплуатацию на недельку чтобы протестировать возможное значительное увеличение количества шпинделей. 3. Пишем на форум о полученных результатах чтобы поделиться положительными ли отрицательными результатами. :) Ну и параллельно оптимизируем код, хотя и так уже дальше некуда, но совершенству нет предела. По поводу бэкапа лога - спасибо идею тоже рассмотрю. Графики перфоманс монитора по основным параметрам покажите сначала. И покажите где и во что упирается. И тут уж ответ будет очевидным, что необходимо оптимизировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2012, 17:35 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
G - зеленый RAID10 из 4 SAS 15K - на нем лежит одна из файлгрупп базы H,J - синиз RAID10 из 4 SAS 15K - на нем лежит лог и темпдб C - желтый RAID1 из 2 SAS 15K - на нем лежит mdf-ка E - красный RAID1 из 2 SSD MLC - на нем лежит одна из файлгрупп базы F - голубой RAID10 из 4 SAS 15K - на нем лежит одна из файлгрупп базы На этом примере загружена больше всего одна из файлгрупп (зеленый G). Но такая же загрузка бывает и по другим файловым группам Красной E и голубой F. Приведенный пример является не максимальной (пиковой) загрузкой сервера, а загрузкой чуть больше чем средней, но и не максимальной. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 11:51 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Kaktus_, 16 гигов ОЗУхи, из них винда показывает выделенных только 5 гигов. Вам точно не надо увеличивать размер дискового буфера в скульсервере? Гигов на пять, для разминки? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 12:51 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
iv_an_ruKaktus_, 16 гигов ОЗУхи, из них винда показывает выделенных только 5 гигов. Вам точно не надо увеличивать размер дискового буфера в скульсервере? Гигов на пять, для разминки? Да на самом деле SQL видит памяти 12 Гб. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 13:15 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Kaktus_, Что возвращает Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
? Ну и DBCC MEMORYSTATUS до кучи ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 13:32 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Вообще тему можно уносить в ветку про MS SQL, потому что затыков по записи на графиках не видно, и стало быть вопрос только в работе с ОЗУхой. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 13:35 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
iv_an_ruKaktus_, Что возвращает Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
? Ну и DBCC MEMORYSTATUS до кучи Первый запрос не работает - может быть потому что у меня MS SQL Server 2000. (Видимо там нет sys.dm_os_memory_clerks По второму Buffre Distribution (Buffers) Stolen 7201 Free 1661 Procedures 17264 Inram 0 Dirty 3593 Kept 0 I/O 2 Latched 1590 Other 433961 Buffer Counts (Buffers) Commited 465272 Target 465272 Hashed 439146 InternalReservation 1782 ExternalReservation 190 Min Free 960 Procedure Cache (Value) Commited 465272 Target 465272 Hashed 439146 InternalReservation 1782 ExternalReservation 190 Min Free 960 Dynamic Manager Memory (Buffers) Stolen 24432 OS Reserved 7056 OS Committed 6997 OS In Use 6623 General 5373 QueryPlan 19928 Optimizer 0 Utilities 138 Connection 818 Glocal Memory Objects (Buffers) Resource 4237 Locks 1709 XDES 275 SQLCache 697 Replication 2 LockBytes 2 ServerGlobal 52 Query Memory Objects (Value) Resource 4237 Locks 1709 XDES 275 SQLCache 697 Replication 2 LockBytes 2 ServerGlobal 52 Optimization Queue (Value) Optimizing 0 Waiting 0 Available 32 Maximum 32 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 14:03 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Kaktus_Buffre Distribution (Buffers) Stolen 7201 Free 1661 Procedures 17264 Inram 0 Dirty 3593 Kept 0 I/O 2 Latched 1590 Other 433961 Это по какому обменному курсу буфера к байту похоже на 12 гигов? При 8Kb буферах --- совсем не похоже. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 14:17 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
iv_an_ruKaktus_Buffre Distribution (Buffers) Stolen 7201 Free 1661 Procedures 17264 Inram 0 Dirty 3593 Kept 0 I/O 2 Latched 1590 Other 433961 Это по какому обменному курсу буфера к байту похоже на 12 гигов? При 8Kb буферах --- совсем не похоже. Мне трудно судить, я никогда таким образом память не анализировал. Я глядел чтобы счетчик памяти показывал сколько нужно, плюс ввод/вывод страниц в секунду чтобы стремился к нулю. Сейчас буду глядеть что значат результаты, которые получились с помощью DBCC MEMORYSTATUS (некогда даже о таком не слышал ранее - всегда только про счетчики через профайлер). ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 14:28 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Я пришел к тому что результаты DBCC MEMORYSTATUS для меня полный лес и никакого просвета. В документации все описано, но я абсолютно не понимаю какие должны быть оптимальные значения и к чему должны стремиться чтобы понять где у меня узкие места по памяти. Кто-то может помочь указать явную(ные) проблемы? Буду премного благодарен. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 15:31 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
авторПервый запрос не работает - может быть потому что у меня MS SQL Server 2000. (Видимо там нет sys.dm_os_memory_clerks в таком случае у вас может быть выделено максимум 3 гига и то с ключиком /3GB в boot.ini. остальное надо выделять через PAE/AWE и то оно сможет использоваться только под буфера данных.. у вас оно ТОЧНО настроенно? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 15:35 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
автор16 гигов ОЗУхи, из них винда показывает выделенных только 5 гигов. select @@version? зело похоже на 4 сервис пак без апдейтов. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 15:36 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
ну и как всегда некисло было бы план запроса со статистикой выполения. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 15:37 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
У меня Win2003R2 SP2 64bit и MS SQL Server 2000 Enterprise Edition SP3 Microsoft SQL Server 2000 - 8.00.760 (Intel X86) Dec 17 2002 14:22:05 Copyright (c) 1988-2003 Microsoft Corporation Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2) Сервер обновлялся и настраивался три года назад мною и ориентиром было чтобы счетчик Доступно МБ в профайлере показывал 12 Гб памяти. Он это и показывает. Теперь подробнее. sp_configure 'awe enabled' возвращает minimum 0, maximum 1, config_value 0, run_value 0 Получается что AWE не включен. В boot.ini никаких ключей PAE 3GB нет. Я правильно понимаю что AWE выключен и PAE выключен. Как тогда профайлер показывает 12 Гб? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 15:54 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
авторКак тогда профайлер показывает 12 Гб? совершенно беспонятия. http://support.microsoft.com/?id=271624 попробуйте это. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 16:07 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
майкрософт говорит "examine the SQL Server: Memory Manager/Total Server Memory (KB) counter in System Monitor" ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 16:08 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Насколько я понял что стормозил - в 64bit-ной Win2003 не нужно включать ключ PAE в boot.ini. Осталось разобраться с AWE. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 16:09 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
http://support.microsoft.com/kb/274750 авторNote: To use Address Windowing Extensions (AWE) memory, you must run the SQL Server 2000 database engine under a Windows account that has been assigned the Windows lock pages in memory administrative credentials. Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 16:14 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Включил AWE. Теперь по счетчику "Доступно МБ" память упала с 12Гб до 3Гб. И не поднимается. Хотя min 9Гб, max 12Гб. Ну теперь я вообще ничего не понимаю. Может ли врать счетчик "Доступно МБ"? Как его проверить? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 17:06 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Предвидя возможный вопрос по закреплению страниц в памяти. Пользователь, под которым запускается SQL Server - это администратор домена и в Локальной политике в Назначении прав пользователя в Закреплении - он есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 17:11 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Что сейчас DBCC MEMORYSTATUS говорит в части Buffer Counts и Buffer Distribution? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 17:13 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Kaktus_Может ли врать счетчик "Доступно МБ"? Как его проверить? автормайкрософт говорит "examine the SQL Server: Memory Manager/Total Server Memory (KB) counter in System Monitor" ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 17:24 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Buffer Distribution (Buffers) Stolen -3593 Free 1070 Procedures 77095 Inram 0 Dirty 9081 Kept 0 I/O 0 Latched 804 Other 1451543 Buffer Counts (Buffers) Commited 1536000 Target 1536000 Hashed 1461428 InternalReservation 212 ExternalReservation 0 Min Free 512 Интересный момент, что на аналогичном сервере (резервный) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 18:26 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
авторOther 1451543 это примерно 11,07439422607422 гиг буферов. поздравляю. Other. These are committed pages that do not meet any of the criteria mentioned earlier. Typically, the majority of buffers that meet this criteria are hashed data and index pages in the buffer cache. посмотри наконец счетчик Total Server Memory ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 18:33 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
ScareCrowавторOther 1451543 это примерно 11,07439422607422 гиг буферов. поздравляю. Other. These are committed pages that do not meet any of the criteria mentioned earlier. Typically, the majority of buffers that meet this criteria are hashed data and index pages in the buffer cache. посмотри наконец счетчик Total Server Memory Хм. Счетчик не изменился. Ну и мало ли вдруг что-то прояснит ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 18:54 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
помоему ты не тот счетчик смотришь. потому что даже графа "выделение памяти " в диспетчере задач, на первом скриншоте 4 гига а щас 14. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 18:59 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
! ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 19:01 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 19:05 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 19:10 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
не тот счетчик. ищи там раздел MS SQL ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 19:12 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
ScareCrowне тот счетчик. ищи там раздел MS SQL Если честно, то очень стыдно что я пялюсь по памяти не в тот счетчик. Я понял проблему. У меня засада в том, что счетчиков SQL Server-а почему-то в профайлере не видно. Сейчас разберусь с этой проблемой и обязательно отпишусь что получилось в итоге. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 19:20 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Kaktus_Other 1451543Во-от. Завтра посмотрите на отклики, и если всё ещё тормоза (что не исключено, потому что мы по-прежнему не знаем загрузки), то воткните ещё 16 памяти и доведите число "дисковых" буферов до трёх миллионов (или трёх с четвертью). Если этот дешёвый способ не поможет, то надо внимательней смотреть будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 19:21 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Не думали над переходом на 2012 версию SQL Server`а? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2012, 11:46 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
КритикНе думали над переходом на 2012 версию SQL Server`а? На Win2003R2 SP2 64bit? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2012, 12:01 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
ну и винду переставить. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2012, 13:33 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Постепенно был проведен апгрейд сервера. Отписываюсь по результатам. Возможно кому-то будет интересна практика наращивания мощности сервера с реальными результатами. 1. Сначала была добавлена память. Во первых были задействованы 12 Гб из 16-ти имеющихся вместо четырех, которые (к моему стыду) были задействованы ранее. 2. Переведены на гигабитную сеть все пользователи, которые работают с тяжелыми или требующей большой производительности операциями типа учета документов, формирование сложных документов, построение сложных отчетов. 3. Всем этим пользователям (предположим их 20 из 70-ти) были обновлены компьютеры со среднестатистического "по больнице" Celeron 2.2 512 Гб RAM до I3 2Гб RAM. 4. После этого возникло некоторое облегчение. Т.к. процесс происходил далеко не за один день - изменения мало были заметны, но если сравнить с тем что было изначально - стало чуть стабильнее (меньше блокировок, меньше подвисаний - да и вообще приятнее работать пользователям), хотя скорость работы впринципе визуально не изменилась. 5. Были добавлены еще 16 Гб памяти. Итого сейчас используется 29 Гб, т.е. количество буферов как и рекоммендовали выше доведено до 3 млн. 6. После этого стало еще стабильнее. 7. Приобретена дисковая полка и теперь дисковая система в отличии от того, что было имеет следующую структуру: Первый контроллер C: - RAID 1 - 2x72 Гб SAS 15K - система E: - RAID 1 - 2x200 Гб SSD MLC - самый ненагруженный (судя по статистике) кусок БД F: - RAID10 - 4x72 Гб SAS 15K - Лог-файл Второй контроллер G: - RAID10 - 4x72 Гб SAS 15K - tempdb Третий контроллер (полка) K: - RAID10 - 14x146 Гб SAS 15K - файлы БД кроме того, что лежит на E: Само собой кэширование, память и батарейки везде. 50% чтение, 50% запись. 8. После этого работа стала еще стабильнее, и даже якобы выросла скорость работы процентов на 10-15. А вот теперь самое интересное. Вот счетчики состояния среднего по больнице. Очереди впринципе выше двойки не поднимаются. По картинке не забываем делить на 100 вертикальную шкалу. Количество обращений к розовому диску (диск К - где лежит БД) впринципе бывает и зашкаливает за 600, но для 14-ти дисков в RAID10 я думаю это вполне уместно с учетом того, что они справляются судя по следующему скрину. Как я и писал, что судя по среднему времени отклика - диски справляются, т.к. "пила" идет обычно только по розовому диску и не поднимается выше 10 мс. 99% - это самая обычная картина использования памяти. Т.е. почти все что нужно умещается в оперативке. Ну и проц впринципе особенно не напрягается. Вот вроде бы все хорошо и замечательно - сервер пустой, машины пользователей не напрягаются. А где же рост? Ну хоть процентов на 50? (Я уж не говорю "в разы"). Куда дальше рыть? Как сделать чтобы скорость выполнения запросов значительно увеличилась? Учетную систему прошу не ругать, она самая обычная. Просто странно что при значительно проапгрейженном сервере и пользовательских машинах я получил только стабильность и рост скорости около 10%. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2013, 14:05 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Kaktus_А где же рост? Ну хоть процентов на 50? (Я уж не говорю "в разы").Вероятно, стоит смотреть и исправлять конкретные запросы и конкретные задержки на IPC. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2013, 14:16 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
iv_an_ru, Это понятно, но ведь даже если запрос крайне не оптимален, то он должен после такого апгрейда выполняться значительно быстрее, а не только на 10 процентов. Предположим имеем таблицу без ключей и индексов. Лежит она на диске. Мы делаем курсором пробежку по этой таблице за 500 мс. Если я сделаю не 1 диск, а предположим 3 диска в RAID0, то (предположим что шины, контроллеры, память и т.п. - все пропускают), то скорость дисковой системы увеличится минимум раза в полтора (в идеале в три, но предположим что в полтора). Будет ли рост в полтора раза скорости выполнения запроса? Вот не будет. Вообще в MS SQL заложена функция гибкого торможения. Ее спонсируют производители железа. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2013, 14:24 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Kaktus_iv_an_ru, Это понятно, но ведь даже если запрос крайне не оптимален, то он должен после такого апгрейда выполняться значительно быстрее, а не только на 10 процентов.С чего бы? Если упор происходит в CPU, то ничего не изменится. И вообще, вы улучшаете систему с точки зрения производительности, а хотите уменьшения времени реакции (что далеко не одно и тоже). P.S. В Paint-е выставьте размер картинки по-умолчанию поменьше, например, 100*100 пикселей, чтобы не было дурацких белых полей у скриншотов. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2013, 14:36 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
miksoftKaktus_iv_an_ru, Это понятно, но ведь даже если запрос крайне не оптимален, то он должен после такого апгрейда выполняться значительно быстрее, а не только на 10 процентов.С чего бы? Если упор происходит в CPU, то ничего не изменится. И вообще, вы улучшаете систему с точки зрения производительности, а хотите уменьшения времени реакции (что далеко не одно и тоже). P.S. В Paint-е выставьте размер картинки по-умолчанию поменьше, например, 100*100 пикселей, чтобы не было дурацких белых полей у скриншотов. Да, с картинками закосячил. Ну вот вы же видите мою систему - узких мест нет. Проц не загружен, винт не загружен, сеть (не вывел скрины, но всеже) не загружена. Машины пользователей также не шибко загружены. Че он (сервер) делает? Поидее если нет узких мест система должна работать максимально быстро пока не появится узкое место, на нем она должна и тормозить. Но если у системы нет узких мест? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2013, 14:39 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Kaktus_, Грейс Хоппер неправильно использовала свои медные наносекунды. Она их студентам показывала, а надо было их этими наносекундами пороть. Чтоб хоть так дошло, что такое латентность, откуда берётся, и почему пиковые пропускные способности не имеют ничего общего с производительностью случайного доступа. Ваш комп сейчас толще того, который готовил все расписания и транспаранты всех спортивных событий в Олимпиаду-2012. То есть если вы в кадре видели титры с именем спортсмена --- они были вынуты с того компа с кучей дополнительной всячины. Это примерно тысяча запросов от приложений-"читателей" в секунду + 30 "писателей" в секунду + репликация, разумеется. И это была четверть от максимальной постоянной нагрузки, которую он обеспечил на нагрузочных тестах. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2013, 14:44 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Kaktus_Проц не загруженНу как же? одно ядро загружено почти полностью. Если в этот момент выполняется только один запрос, то как раз в это ядро и будет упор. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2013, 15:09 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Kaktus_Ну вот вы же видите мою систему - узких мест нет. Проц не загружен, винт не загружен, сеть (не вывел скрины, но всеже) не загружена. Машины пользователей также не шибко загружены. Че он (сервер) делает? Поидее если нет узких мест система должна работать максимально быстро пока не появится узкое место, на нем она должна и тормозить. Но если у системы нет узких мест? :)Ну так найдите узкие места. Смотрите конкретные проблемы, а не "система должна работать максимально быстро". То есть смотрите выполнение конкретного запроса, или целиком цепочку, включая приложение (может, проблема в клиенте, который долго отрисовывает?) Вам же писали. что нужно находить конкретные проблемы и решать их, заниматься перформансом, а не просто проапгрейдить железо и ждать чуда. Может у вас и раньшще мощности сервера хватало. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2013, 15:18 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
iv_an_ruKaktus_, Грейс Хоппер неправильно использовала свои медные наносекунды. Она их студентам показывала, а надо было их этими наносекундами пороть. Чтоб хоть так дошло, что такое латентность, откуда берётся, и почему пиковые пропускные способности не имеют ничего общего с производительностью случайного доступа. Ваш комп сейчас толще того, который готовил все расписания и транспаранты всех спортивных событий в Олимпиаду-2012. То есть если вы в кадре видели титры с именем спортсмена --- они были вынуты с того компа с кучей дополнительной всячины. Это примерно тысяча запросов от приложений-"читателей" в секунду + 30 "писателей" в секунду + репликация, разумеется. И это была четверть от максимальной постоянной нагрузки, которую он обеспечил на нагрузочных тестах. Сейчас померял профайлером количество запросов в секунду (снял фильтр по Duration). Получилось около 2 тысяч запросов (чтение и запись не делил). Интересная информация даже для меня. У меня в профайлере по Duration всегда было наложено 100 мс - это чтобы контроллировать ситуацию по торможению. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2013, 15:29 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
miksoftKaktus_Проц не загруженНу как же? одно ядро загружено почти полностью. Если в этот момент выполняется только один запрос, то как раз в это ядро и будет упор. У меня обычно статистика по процу изредка касается пиками 100%, но никогда достигнув 100% не остается на ней более 1 секунды и то очень очень редко. Просто гипотетически если я воткну более мощные процы и статистика по использованию процессора уменьшится ровно в два раза - я не думаю что получу даже 10%-ый выигрыш общей производительности системы. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2013, 15:31 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
alexeyvgKaktus_Ну вот вы же видите мою систему - узких мест нет. Проц не загружен, винт не загружен, сеть (не вывел скрины, но всеже) не загружена. Машины пользователей также не шибко загружены. Че он (сервер) делает? Поидее если нет узких мест система должна работать максимально быстро пока не появится узкое место, на нем она должна и тормозить. Но если у системы нет узких мест? :)Ну так найдите узкие места. Смотрите конкретные проблемы, а не "система должна работать максимально быстро". То есть смотрите выполнение конкретного запроса, или целиком цепочку, включая приложение (может, проблема в клиенте, который долго отрисовывает?) Вам же писали. что нужно находить конкретные проблемы и решать их, заниматься перформансом, а не просто проапгрейдить железо и ждать чуда. Может у вас и раньшще мощности сервера хватало. Да как найти узкие места? Уже все обычные узкие места отработаны и судя по счетчикам не являются узкими. Если укрупненно, то - Очередей нет - Проц не загружен - Памяти достаточно - Сеть не загружена - Компы пользователей мощны - Среднее время чтения и записи на диски намного менее 20 мс Что еще смотреть? У меня нет длинных запросов - у меня каждый запрос выполняется адекватное количество времени, да и выполнялся раньше адекватное количество времени, но я хочу еще ускорить. Как это сделать? Возможности учетной системы считаем исчерпанными. Нечего там больше оптимизировать. А если что-то и оптимизируем, то это не даст нужно роста. Уже много лет оптимизируем. Нечего там уже переписывать. Только жать базу. А этого я не хочу. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2013, 15:36 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Kaktus_Вот вроде бы все хорошо и замечательно - сервер пустой, машины пользователей не напрягаются. А где же рост? Ну хоть процентов на 50? (Я уж не говорю "в разы"). Куда дальше рыть? Как сделать чтобы скорость выполнения запросов значительно увеличилась? Учетную систему прошу не ругать, она самая обычная. Просто странно что при значительно проапгрейженном сервере и пользовательских машинах я получил только стабильность и рост скорости около 10%. 1. Обновление статистики. 2. Фрагментация таблиц. 3. Топология сети. 4. Оптимальность запросов к базе. и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2013, 15:40 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Kaktus_miksoftпропущено... Ну как же? одно ядро загружено почти полностью. Если в этот момент выполняется только один запрос, то как раз в это ядро и будет упор. У меня обычно статистика по процу изредка касается пиками 100%, но никогда достигнув 100% не остается на ней более 1 секунды и то очень очень редко. Просто гипотетически если я воткну более мощные процы и статистика по использованию процессора уменьшится ровно в два раза - я не думаю что получу даже 10%-ый выигрыш общей производительности системы.Что в вашем понимании "более мощные процы"? Если будет больше ядер - лучше не станет. А если повысите частоту - лучше станет, но не более, чем на рост частоты. Кстати, не забывайте, что 100% - это от всех ядер. А поскольку ядер 8, то может происходить упор в CPU уже при 12%. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2013, 15:42 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
miksoftЕсли будет больше ядер - лучше не станет. А если повысите частоту - лучше станет, но не более, чем на рост частоты. Даже менее. И намного. Хотя насчёт архитектуры вы не правы. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2013, 15:56 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
KhodmiksoftЕсли будет больше ядер - лучше не станет. А если повысите частоту - лучше станет, но не более, чем на рост частоты. Даже менее. И намного. Хотя насчёт архитектуры вы не правы.Что "менее"? какой-такой архитектуры? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2013, 16:01 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
[quot Khod]Kaktus_ Вырезал... 1. Обновление статистики. 2. Фрагментация таблиц. 3. Топология сети. 4. Оптимальность запросов к базе. и т.д. Обновление статистики по основным таблицам (порядка 30-ти) происходит ежедневно принудительно. Плюс стоит Auto Update Statistics. Да и после обновления статистики прироста не видно никакого. Да, фрагментация есть. Подзасираются, но даже полное перестроение всех абсолютно индексов всех таблиц не дает видимого прироста производительности даже в первое время работы с базой после этой процедуры. Сеть достаточно разветвленная, на площади порядка 70 тыс кв. метров. Около 120 юзеров из которых учетной системой одновременно пользуются около 70-ти. У 20-ти из них (с самой большой нагрузкой) гигабит. Реальный до сервера через гигабитные естественно свичи. Но это все не узкое место. Дело в том, что скорость выполнения запросов на сервере примерно такая же как и у пользователей. Т.е. нельзя сказать что на сервере выполняется даже в полтора раза быстрее. Ну а оптимизация запросов - это бесконечная история. Длится она уже несколько лет и ну нечего там уже оптимизировать. Пожалуйста если есть еще какие-то мысли что может быть гипотетическим узким местом - напишите мне. Просто уже все идеи закончились. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2013, 16:09 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Kaktus_Пожалуйста если есть еще какие-то мысли что может быть гипотетическим узким местом - напишите мне. Просто уже все идеи закончились.Мои мысли про CPU вы принципиально не воспринимаете? Сколько в среднем сессий у вас находится в активном состоянии (т.е. выполняют какой-нибудь запрос) ? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2013, 16:18 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
miksoftKaktus_Пожалуйста если есть еще какие-то мысли что может быть гипотетическим узким местом - напишите мне. Просто уже все идеи закончились.Мои мысли про CPU вы принципиально не воспринимаете? Сколько в среднем сессий у вас находится в активном состоянии (т.е. выполняют какой-нибудь запрос) ? Почему же. Я пока наблюдаю, но действительно не вижу чтобы хотя бы по одному ядру у меня зашкаливала сотня. Обычно даже если и доходит куда-то высоко, то касается сотни и падает, но это редкость. Т.е. ни одно из ядер на мой взгляд не перегружено. Сессий в активном состоянии чтобы одновременно выполняли запросы... Вот последний раз я снял - у меня 70 тыс запросов в минуту получилось. Выкинем отсюда 20 тысяч запросов - какой-то пользователь запустил видимо какой-то хитрый отчет и получится что за минуту 30 пользователей (по трассе) выполнили 50 тысяч запросов. Получается в секунду было около 900 запросов от не более чем 30 сессий. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2013, 16:25 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
miksoftKaktus_Пожалуйста если есть еще какие-то мысли что может быть гипотетическим узким местом - напишите мне. Просто уже все идеи закончились.Мои мысли про CPU вы принципиально не воспринимаете? Сколько в среднем сессий у вас находится в активном состоянии (т.е. выполняют какой-нибудь запрос) ? Еще один нюанс забыл написать в предыдущем сообщении очень важный. Дело в том, что скорость выполнения на скажем так отключенном от сети сервере примерно такая же как и у пользователей (ну максимум на 20-30 процентов быстрее) но не в разы. Об этом я писал кому-то из пользователей выше и поэтому я сейчас вообще в полной растерянности куда рыть. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2013, 16:27 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Kaktus_не вижу чтобы хотя бы по одному ядру у меня зашкаливала сотня. Обычно даже если и доходит куда-то высоко, то касается сотни и падает, но это редкость. Т.е. ни одно из ядер на мой взгляд не перегружено.отдельно взятое ядро мало смысла наблюдать. ОС одну потоку может выделять кванты времени на разных ядрах. Т.е. вы можете видеть 12% загрузки по каждому ядру при одном потоке и этот поток будет упираться в CPU. В реальности, конечно, нагрузка раскидывается по ядрам не столь равномерно, но все равно раскидывается. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2013, 16:34 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Kaktus_Да, фрагментация есть. Подзасираются, но даже полное перестроение всех абсолютно индексов всех таблиц не дает видимого прироста производительности даже в первое время работы с базой после этой процедуры. Фрагментация и индексирование понятия разные. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2013, 16:37 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Kaktus_Ну а оптимизация запросов - это бесконечная история. Длится она уже несколько лет и ну нечего там уже оптимизировать.Забавно, но всегда, когда я встречал такие утверждения, потом находились весьма существенные косяки в оптимизации запросов. Поспрошайте на MS SQL-ном подфоруме на тему обнаружения самых нагружающих базу запросов. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2013, 16:40 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Kaktus_Возможности учетной системы считаем исчерпанными. Нечего там больше оптимизировать. А если что-то и оптимизируем, то это не даст нужно роста. Уже много лет оптимизируем. Нечего там уже переписывать. Kaktus_Ну а оптимизация запросов - это бесконечная история. Длится она уже несколько лет и ну нечего там уже оптимизировать. Kaktus_Сейчас померял профайлером количество запросов в секунду (снял фильтр по Duration). Получилось около 2 тысяч запросов (чтение и запись не делил). Интересная информация даже для меня . У меня в профайлере по Duration всегда было наложено 100 мс - это чтобы контроллировать ситуацию по торможению. Судя по последней цитате, вы даже не начинали заниматься оптимизацией? Как может человек, гуру по оптимизации и знаток своей учётной системы, не знать, сколько запросов выполняется??? Да перед вами листок должен висеть с этой статистикой, вы должны помнить распределение количества обращений к серверу по типам, по затрагиваемым таблицам, не то что общую цифру. Kaktus_alexeyvgНу так найдите узкие места. Смотрите конкретные проблемы, а не "система должна работать максимально быстро". Да как найти узкие места? Уже все обычные узкие места отработаны и судя по счетчикам не являются узкими.Вы говорите про узкие места в смысле каких то синтетических показателей, да ещё и агрегатные, а я говорю о тех местах, которые не устраивают пользователей. Есть какие то проблемы у пользователей, или всё нормально? Если есть, то какие? Например, "накладная после двойного клика по ней в списке накладных показывается медленно". Сделайте полный трейс от двойного клика до отрисовки последнего пикселя. Изучаете, ищете те блоки, которые выполняются медленно, смотрите, почему медленно. Проблема может быть: а) не в сервере б) не в тяжёлых запросах Да в чём угодно может быть проблема, например, в домене имена долго ресолвятся или получаются привелегии от AD! ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2013, 19:46 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
miksoftKaktus_Ну а оптимизация запросов - это бесконечная история. Длится она уже несколько лет и ну нечего там уже оптимизировать.Забавно, но всегда, когда я встречал такие утверждения, потом находились весьма существенные косяки в оптимизации запросов. Поспрошайте на MS SQL-ном подфоруме на тему обнаружения самых нагружающих базу запросов.Причина то постепенно проясняется. Сервер загружен мелкими запросами, 2К/сек (хотя в принципе это не так и много) Очевидно, каждое приложение на действие пользователя (или даже не на действие, а при например перерисовках) в один поток высыпает кучу последовательных запросов, ну вот оно и медленно. Там элементарно бага может быть, типа заполнение из базы кучи выпадающих комбобоксов из справочников на рефреш экрана, или что то такое. Нужно как то писать так, что бы одно пользовательское действие в результате приводило к одному, в крайнем случае, к нескольким запросам к серверу. Тогда сотня пользователей будет незаметно для сервера в десяток раз слабее. А в данном случае, повторю, нужно просто искать причину, а не смотреть на агрегатные счётчики. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2013, 19:56 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
alexeyvgСервер загружен мелкими запросами, 2К/сек (хотя в принципе это не так и много) Очевидно, каждое приложение на действие пользователя (или даже не на действие, а при например перерисовках ) в один поток высыпает кучу последовательных запросов, ну вот оно и медленно. Там элементарно бага может быть, типа заполнение из базы кучи выпадающих комбобоксов из справочников на рефреш экрана, или что то такое.Да, кстати, недавно была такая тема . ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2013, 20:09 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Все дело в том, что у меня есть учетная система, которую я не хочу в корне переписывать. Я не думаю что разработчики изначально писали всю ее через жэ. К системе добавлено множество блоков, которая ее расширяют - вот их мы оптимизировали, оптимизируем и будем оптимизировать. Но я хочу ускорить ту систему, что уже есть. Та, что стоит на сотнях тысячах предприятий в мире. Для этого я и анализирую счетчики и т.п. У меня был сервер не очень оптимальный и на нем работала учетная система. Теперь я считаю что у меня отличный сервер судя по всем известным мне счетчикам, но скорость работы системы не увеличилась даже на половину. Ясен пень что если всю систему переписать заново, выкинув из нее все то, чем мы не пользуемся и переписать на прямые sql-запросы - все будет летать, но я хочу понять как ускорить имеющуюся систему через "железо", а не через переписывание кода. И вот поэтому я ищу идеи что бы еще такое сделать чтобы ускорить имеющуюся систему. Я задумался над оперативной памятью. Мы все привыкли к тому, что оперативная память - это супербыстро. А действительно ли это так? Вот есть у меня запрос - он выполняется 200 мс и я вижу, что он выполняется без физического чтения страниц по счетчику Pages Read / sec из SQL Server:Buffer Manager. А настолько ли быстра память? Вот память, которая у меня стоит это DDR3 1333Mhz PC3-10600, т.е. скорость ее работы 10 Гигабит/сек. Не будем считать ее двухканальной, и процессор трехканальным и тот факт что процессоров два. 10 Гигабит / сек это всего 1 Гигабайт / сек. Скорость работы жесткого диска SAS 15K порядка 300 Мегабайт / сек (давайте про иопсы не будем. У нас один компьютер, один клиент, один проц, одна планка памяти и один запрос в одну единицу времени). Получается что оперативная память работает всего лишь с такой скоростью, как работали бы три диска SAS 15K в RAID0. Но ведь это медленно очень! Поправьте меня - в чем я не прав? Наверняка в чем-то не прав, но в чем не прав в корне? Т.к. получается что лучше оставить SQLю минимум памяти и купить EVA с кучей дисков, которые дадут такую производительность, что обгонят оперативку. А как работают системы с бОльшей нагрузкой? Насколько я понимаю в разы более крутой памяти в обычной продаже пока нет. Нужно увеличивать количество физических процессоров? Если подытожить - как увеличить скорость выполнения запроса если он запускается на пустом сервере и все данные, необходимые для этого запроса находятся в оперативной памяти? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2013, 16:51 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Kaktus_давайте про иопсы не будем. У нас один компьютер, один клиент, один проц, одна планка памяти и один запрос в одну единицу времениИ ровно один сектор на диске, ага. Головка всегда сама собой оказывается на нужном месте и одному запросу одного клиента никогда не надо тупо ждать, когда же она попадёт туда, где лежит ответ на запрос. И конечно весь ответ лежит в одном месте, поэтому после первого чтения никогда не надо будет ждать перемещения к другому куску данных. Давайте не будем ни о чём, кроме последовательных и параллельных иопсов, пока вы не уясните, насколько это важно для СУБД. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2013, 16:57 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Kaktus_Вот память, которая у меня стоит это DDR3 1333Mhz PC3-10600, т.е. скорость ее работы 10 Гигабит/сек. Не будем считать ее двухканальной, и процессор трехканальным и тот факт что процессоров два. 10 Гигабит / сек это всего 1 Гигабайт / сек. Скорость работы жесткого диска SAS 15K порядка 300 Мегабайт / сек (давайте про иопсы не будем. У нас один компьютер, один клиент, один проц, одна планка памяти и один запрос в одну единицу времени). Получается что оперативная память работает всего лишь с такой скоростью, как работали бы три диска SAS 15K в RAID0. Но ведь это медленно очень!Но память не одноканальная, а процессора не два, ну и на поиск нужно время. Так что не 3 диска :-) Kaktus_Т.к. получается что лучше оставить SQLю минимум памяти и купить EVA с кучей дисков, которые дадут такую производительность, что обгонят оперативку.Неправильно. Всё равно чтение идёт через память :-) Kaktus_Если подытожить - как увеличить скорость выполнения запроса если он запускается на пустом сервере и все данные, необходимые для этого запроса находятся в оперативной памяти?Увеличением частоты процессора, увеличением частоты памяти, ывеличением распаралеливания запроса, и уменьшением распаралеливания запроса (последние 2 варианта зависят от запроса, выгодным может быть и то и другое). Kaktus_И вот поэтому я ищу идеи что бы еще такое сделать чтобы ускорить имеющуюся систему.Много раз писали - для начала найти причину. Может, вам нужно просто какую то опцию сервера переключить? Kaktus_Но я хочу ускорить ту систему, что уже есть. Та, что стоит на сотнях тысячах предприятий в мире.А, я сначала по вашим словам понял, что это ваша система. А какая, если не секрет? Тогда вариант - обратиться в службу поддержки разработчиков. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2013, 17:22 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Kaktus_Получается что оперативная память работает всего лишь с такой скоростью, как работали бы три диска SAS 15K в RAID0. Но ведь это медленно очень! Поправьте меня - в чем я не прав? Наверняка в чем-то не прав, но в чем не прав в корне? Т.к. получается что лучше оставить SQLю минимум памяти и купить EVA с кучей дисков, которые дадут такую производительность, что обгонят оперативку.Вы опять путаете производительность со временем реакции (в терминах HDD это latency). Производительность массивов дисков, действительно, может быть сравнима с производительностью оперативной памяти, но по latency у них разница на многие порядки. Так и у своего сервера вы улучшили производительность, а не время реакции. Т.е. теперь он сможет обслуживать больше пользователей без видимого ухудшения. Kaktus_Если подытожить - как увеличить скорость выполнения запроса если он запускается на пустом сервере и все данные, необходимые для этого запроса находятся в оперативной памяти?Оптимизировать запрос, в т.ч. и классическими методами - индексами и т.п. Иногда, если СУБД такое умеет и если многие объемные курсоры выбираются не полностью, помогает переключение режима оптимизатора для этих запросов в FIRST_ROWS. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2013, 17:51 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
попробую внести свои 5копеек по наблюдениям в ХР с помощью ProcessExplorer обнаружил, что система может тормозить из-за Hardware Interrupts and DPCs, очень похоже по приведенным картинкам, все не загруженно, а система тормозит Hardware Interrupts and DPCs должно быть = 0 или очень близко к 0 а судя по диаграммам - система не нагружена, возникает подозрение, что какие-то ожидания , чего-то у железа, у сетевух или еще чего, что-то не согласованно, возможно необходимо оптимизировать сеть (величину пакетов и пр.), процессор больше простаивает (ожидая готовности чего-то) вместо обработки, уж загрузка процессоров к этому очень склоняет. как пример - сеть передает, но с ошибкой, и пока весь буфер передастся система будет ждать. ведь не UDP протокол. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2013, 23:29 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Kaktus_Все дело в том, что у меня есть учетная система, которую я не хочу в корне переписывать. Я не думаю что разработчики изначально писали всю ее через жэ. К системе добавлено множество блоков, которая ее расширяют - вот их мы оптимизировали, оптимизируем и будем оптимизировать. Святая наивность. Сколько лет системе? Под какую платформу и железо она написана? Оптимизировать нужно в комплексе. А не только одну часть (но не самую главную). ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2013, 16:22 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
KhodСколько лет системе? Под какую платформу и железо она написана?Ладно, если много лет, то совсем не обязательно медленно или плохо сделано, наверняка даже наоборот. Kaktus_Все дело в том, что у меня есть учетная система, которую я не хочу в корне переписывать. Я не думаю что разработчики изначально писали всю ее через жэ. К системе добавлено множество блоков, которая ее расширяют - вот их мы оптимизировали, оптимизируем и будем оптимизировать.Вот интересно - все "сотни тысяч инсталляций" этой системы так плохо работают, или только те, которые вы меняли? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2013, 19:08 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
Kaktus_, Вместо Raid 10 сделате Raid 5 Поменяйте БД на промыштенную. Например на Oracle ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 18:57 |
|
Значительное увеличение количества шпинделей
|
|||
---|---|---|---|
#18+
авторВместо Raid 10 сделате Raid 5 На запись и перезапись 5-ка будет медленнее гораздо, чем 10. По чтению примерно равно или чуть хуже. авторНапример на Oracle 1С например заточена под MS SQL, хоть на Оракле, хоть на дб\2 - ведет себя медленнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2013, 11:13 |
|
|
start [/forum/topic.php?all=1&fid=30&tid=1529917]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
102ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 200ms |
0 / 0 |