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

Откуда:
Сообщений: 12
Есть 2 виртуальных сервера. Сервер 1 и Сервер 2.
Сервер 2 новый, только установили, по идее более мощный по сравнению с первыми.
Но на новом сервере мелкие SQL запросы исполняются медленнее. И я никак не могу понять что не так с новым сервером, крыша уже едет.
Может у кого идеи какие будут, а?
Спасибо заранее.

У нас есть интернет магазин на баще CMS (Episerver+Commerce), который для генерации некоторых страниц отправляет к БД несколько тысяч мелких запросов
которые исполняются за несколько десятков милисекунд.
Геренаци страницы с использованием старого сервера занимает 4-5 секунд, а на новом 6-8 секунд.
Скорость исполнения мелких запросов на новом сервере в 1.5-2 раза меньше по сравнению со старым.
Я сравнивал исполнение одного и того-же запроса (Select) на двух серверах и на новом зтот запрос исполняется в среднем в 2 раза медленее
При этом загрузка ядер на новом сервере 20-30 процентов максимум некоторые cVPU ничего не делают. Дисковая очередь не превышает 1-2
Для эксперимента я поместил на новом сервере файлы БД и Temp на RAM диск, результат тот-же.
На двух серверах для этого запроса разные планы исполнения запроса, базы идентичны, на новом сервере база была восстановлена из бэкапа сделанного на Сервере 1.

Настройки СУБД идентичны на обоих серверах (сравнивал вывод sp_configure). Сервер сам опеределяет сколько ядер и памяти использовать, эти настройки по умолчанию.
Оптимизация приложения нецелесообразна, т.к. от него скоро откажутся скорее всего.


Сервер 1:
ОС: Windows 2008R2 SP2 Web edition
СУБД MS SQL Server 2008 Web Edition RTM
Технология виртуализации: VmWare vSphere (версия и настройки не известны, нет доступа)
Виртуальное железо: 6 vCPU (оперделяеся как CPU X5650 @ 2.67GHz ), 12Gb RAM, диски скорее всего подключены через SAN

Сервер 2:
ОС: Windows Server 2012 Datacenter Edition SP1
СУБД MS SQL Server 2008 Web Edition SP2
Технология виртуализации: Hyper-V. На хост машине стоит Windows Server 2012 Datacenter Edition SP1
Виртуальное железо: 9VCPU, 32Gb RAM, диски VHD фикс размера, располагающиеся на RAID 10 Массиве. (в RAID 10 - 6 SAS дисков на 10000).
Реальное железо - Dell PowerEdge R620, 1 x Eight Core E5-2670, 6 x 600 GB SAS

Я сравнивал производительность CPU на обоих серверах приложением SuperPI, насколько я понял оно использует только одно ядро и на новом сервере частота чуть меньше, думаю это объясняет разницу.
Сервер 1 - 15.987 сек для генерации 1Мб числа PI
Сервер 2 - 16.657 сек для генерации 1Мб числа PI


Если требуются дополнительная информация - только дайте знать.
25 фев 14, 00:01    [15623149]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Server 2008 R2. Такая разная производительность.  [new]
ScareCrow
Member

Откуда: Белый город
Сообщений: 16921
автор
Виртуальное железо: 9VCPU
1 x Eight Core E5-2670


не делайте виртуализацию.
25 фев 14, 01:06    [15623255]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Server 2008 R2. Такая разная производительность.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31429
Dimic
Я сравнивал исполнение одного и того-же запроса (Select) на двух серверах и на новом зтот запрос исполняется в среднем в 2 раза медленее
При этом загрузка ядер на новом сервере 20-30 процентов максимум некоторые cVPU ничего не делают. Дисковая очередь не превышает 1-2
Может, просто новый сервер медленее отдаёт результат (из за медленного контроллера или старых драйверов)

Мерять производительноть не так просто, самое правильное - мерить на том приложении, которое и будет эксплуатироваться.

Ну и настройка виртуалок - не такое простое дело, проще с физическим реальным сервером.
Dimic
Сервер 2 новый, только установили, по идее более мощный по сравнению с первыми.
Это тоже не факт. Сервер для СУБД - это на 90% диски, а 10% - процессоры память сеть и прочая мелочь. А про диск как раз непонятно.
25 фев 14, 01:47    [15623303]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Server 2008 R2. Такая разная производительность.  [new]
Dimic
Member

Откуда:
Сообщений: 12
Спасибо за ответы, ребят.

не делайте виртуализацию.

Уже поздно, другого железа нет :(
Может, просто новый сервер медленее отдаёт результат (из за медленного контроллера или старых драйверов)

Проверю драйвера, спасибо за идею.
Мерять производительноть не так просто, самое правильное - мерить на том приложении, которое и будет эксплуатироваться.

Я скопировал приложение и БД с действующего сервера и запустил это на новом сервере, Приложение работает медленнее, начал ковырять и откопал что запросы на новом исполняются медленее.
Ну и настройка виртуалок - не такое простое дело, проще с физическим реальным сервером.

Подскажите пожалуйста, а что почитать про настройку виртуалок?
Я не нашел особых рекомендаций для Hyper-V, за исключеним использования для серверов СУБД Pass Through диски (использование реальных дисков) и использования Synthetic устройств.
Это тоже не факт. Сервер для СУБД - это на 90% диски, а 10% - процессоры память сеть и прочая мелочь. А про диск как раз непонятно.

Используется Pass Through диск для хранения файлов БД, в дополнение к этому я всю базу для эксперимента вообще в RAM диск перенес - результата нет, все-равно медленно.
Кстати, я производительность замеряю непосредствено на серверах через RDP, поэтому сеть тоже пока отпадает.

Я упомимал что медленно работают мелкие запросы, может есть какие-то способы оптимизации MS SQL под работу с маленькими SQL запросами?
25 фев 14, 08:38    [15623539]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Server 2008 R2. Такая разная производительность.  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Dimic
Я упомимал что медленно работают мелкие запросы, может есть какие-то способы оптимизации MS SQL под работу с маленькими SQL запросами?
Может у вас там компиляция каждый раз делается...
Не проверяли?
25 фев 14, 09:20    [15623646]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Server 2008 R2. Такая разная производительность.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31429
Dimic
Проверю драйвера, спасибо за идею.
Лучше использовать тест, который не выводит резарлтсет. Например, SELECT ... INTO ... FROM ...
Dimic
может есть какие-то способы оптимизации MS SQL под работу с маленькими SQL запросами?
Отдельный рейд для лога (хотя бы зеркало), обязательно кеш на запись с батарейкой (и чтоб он был включён).
Производительность при OLTP нагрузке зависит от задержек при записи в лог.

Dimic
Ну и настройка виртуалок - не такое простое дело, проще с физическим реальным сервером.

Подскажите пожалуйста, а что почитать про настройку виртуалок?
Я не нашел особых рекомендаций для Hyper-V, за исключеним использования для серверов СУБД Pass Through диски (использование реальных дисков) и использования Synthetic устройств.
Хе...
Хороший вопрос.

"Я тут узнал, что есть ОС UNIX, мне дали такую, а что почитать про настройку?" :-)

Это большая тема, читать нужно форумы, книги, документацию.
Могу сказать, что я за много-много лет работы встретил только одного админа, который умел хорошо настраивать виртуалки для сиквела (кстати, очень хвалил Hyper-V), и огромное количество тех, у кого это не получалось. Разумеется, он такой в мире не один, тем не менее это говорит о том, что всё таки это непростое дело и требует квалификации. Такие люди есть там, где очень много сиквелов под виртуалки, и админы отвечают именно за работу сиквела.

Впрочем, от версии к версии всё становится проще, так что проблема может быть и не в виртуалках.
25 фев 14, 09:54    [15623775]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Server 2008 R2. Такая разная производительность.  [new]
invm
Member

Откуда: Москва
Сообщений: 9397
Dimic
На двух серверах для этого запроса разные планы исполнения запроса, базы идентичны, на новом сервере база была восстановлена из бэкапа сделанного на Сервере 1.
Сначала нужно выяснить причины этого, тогда может и в железе не нужно будет копаться.
Одной из причин может быть:
Dimic
Сервер 1:
СУБД MS SQL Server 2008 Web Edition RTM
Dimic
Сервер 2:
СУБД MS SQL Server 2008 Web Edition SP2
25 фев 14, 10:04    [15623829]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Server 2008 R2. Такая разная производительность.  [new]
aleks2
Guest
invm
Dimic
На двух серверах для этого запроса разные планы исполнения запроса, базы идентичны, на новом сервере база была восстановлена из бэкапа сделанного на Сервере 1.
Сначала нужно выяснить причины этого, тогда может и в железе не нужно будет копаться.
Одной из причин может быть:
Dimic
Сервер 1:
СУБД MS SQL Server 2008 Web Edition RTM
Dimic
Сервер 2:
СУБД MS SQL Server 2008 Web Edition SP2


При уровне знаний тредстартера, самая вероятная причина - необновленная статистика.
25 фев 14, 10:21    [15623916]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Server 2008 R2. Такая разная производительность.  [new]
virtuOS
Member

Откуда: большая деревня
Сообщений: 265
автор
На двух серверах для этого запроса разные планы исполнения запроса, базы идентичны,

Если это не опечатка, то ответ очевиден. Начать с обновления статистики.
25 фев 14, 20:59    [15629060]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Server 2008 R2. Такая разная производительность.  [new]
Dimic
Member

Откуда:
Сообщений: 12
Всем спасибо за ответы!

Насчет перекомпиляции запросов каждый раз - запрос исполняется в рамках хранимой процедуры, так-что скорее всего используется кэшированный план исполнения. Завтра проверю.

Статистику обновил для всех таблиц в базе на новом сервере. Планы запроса на двух серверах разные. На скорости приложения тоже не отразилось никак (
Завтра еще раз сравню скорость исполнения запросов в профайлере.
26 фев 14, 01:29    [15629926]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Server 2008 R2. Такая разная производительность.  [new]
Dimic
Member

Откуда:
Сообщений: 12
Вот кто бы мог подумать, а? :)
На sysadmins.ru мне дале наводку проверить план электропитания.
План электропитания был установлен в режим - Производительность, а вот в настройках сервера , а биосе, сервер позволял операционной системе менять частоту процессора в зависимости от загрузки.
Операционная система сбрасывала частоту ядер со штатных 2.6 Ghz до 1.3 Ghz.
Запретил это дело и новый сервер заработал шустрее старого.

Вот источник.
http://sqlserverperformance.wordpress.com/2010/09/28/windows-power-plans-and-cpu-performance/

Надеюсь это была единственная причина. Всем большое спасибо.
26 фев 14, 14:00    [15632413]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить