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

Откуда:
Сообщений: 12
Привет, народ!

У меня проблема с MS SQLSERVER на клауд сервере.
Параметры сервера 2 ядра, 4 гб ОЗУ. Server 2009 R2 SP1, SqlServer 2012
Стоит только SQlServer, даже антивируса нет.


Сама проблема:
ЗАпись на SQLSERVER происходит в основном через десктоп-приложение, а отчеты пользователи получает через наш сайт.
Как видно на скриншоте SQLSERVER занимает почти 3 гб ОЗУ и почти 100% ресурсов. В это время было активных около 100 пользователей чтения-записи на SQLSERVER.
Я хотел узнать, это правильно, что со 100 активными пользователями SQLSERVER так занимает ресурсы?
Скоро у нас будут более 500 активных пользователей, какую конфигурацию клауд сервера (или выделенного сервера) вы могли бы порекомендовать?

Заранее спасибо.

К сообщению приложен файл. Размер - 137Kb
17 дек 16, 03:38    [20015025]     Ответить | Цитировать Сообщить модератору
 Re: MS SQLSERVER занимает почти 100% ресурсов  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 32174
umrbek79
Скоро у нас будут более 500 активных пользователей, какую конфигурацию клауд сервера (или выделенного сервера) вы могли бы порекомендовать?
Формулы такой нет, общей, какие нужны ресурсы для 100 (500) пользователей. Можно и одним пользователем загрузить суперсервер на 100%
Определение минимальных/оптимальных конфигураций железа (ресурсов) - дело поставщиков софта. Ну или команды DBA, после тщательного изучения работы системы.
Ещё можно сказать, что 2 ядра и 4 гб ОЗУ - это мало для типичной OLTP системы со 100 активно работающими пользователями. Но, повторю, всё зависит от системы.
17 дек 16, 12:56    [20015555]     Ответить | Цитировать Сообщить модератору
 Re: MS SQLSERVER занимает почти 100% ресурсов  [new]
umrbek79
Member

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

На сервере находится база данных учеников. Клиентское ПО отправляет данные посещаемости учеников за день.
Таблица посещаемости маленькая конечно, там только код ученика и время посещения занятий. Таблица посещаемости отправляется на сервер с помощью функции SQLBULKCOPY.
Таких учебных заведений, т.е. клиентов сервера около 500 (будет еще больше).
На сайте с помощью SQL запросов создаются отчеты и вычисляются проценты посещаемости по каждому учебному заведению. Любой пользователь может зайти на сайт и посмотреть отчет.
Таким образом, о количестве одновременных подключений к серверу остается только догадываться...

Я сам еще новичок по работе с MS SQL сервером. У меня возник вопрос: все форумы говорят об индексации. У меня все таблицы не индексированы. Я опасаюсь, может это влияет на производительность сервера?

="Usaga;9907942"
Может всё триггерами усеяно, а все запросы имеют вид "SELECT * FROM" + миллионы "JOIN".

Триггеров нету, я сам не знаю что такое триггер ;)
А насчет запросов, "select *" я избегаю, а JOIN ы там несколько, т.е. "ученик+посещаемость+школа+город+область" вот как-то так...

="Hikari;9909562"
Если отключить всех клиентов - сервер будет столько кушать?
Клиентское ПО не может ввергать его пучину "трудолюбия"?


Если отключить всех клиентов - сервер вообще ничего не кушает.
Одно клиентское подключение с инсертом SQLBULKCOPY заставляет работать сервер на 15-20% ресурсов, но это только, когда запрос активен.

="m0nax;9909519"
если какой-нибудь w3wp.exe тоже захочет памяти там начнется драка и в итоге все участники скатятся в своп, нагрузят диск, повиснут запросы

Именно так и случается, т.е клиент отправляет данные на сервер (функцией SQLBULKCOPY если не забыли), прога пишет что успешно отправила на сервер. Я на сервер отправляю запрос с инсертом. Результат: записи не добавлены!

Что можете посоветовать?
17 дек 16, 23:45    [20017069]     Ответить | Цитировать Сообщить модератору
 Re: MS SQLSERVER занимает почти 100% ресурсов  [new]
umrbek79
Member

Откуда:
Сообщений: 12
Кстати, после перезапуска SQL сервера все работает отлично полдня, а потом потребление ресурсов этим процессом достигает почти 1005%, а занимаемая память увеличивается больше 3 гб и запросы висят и отправленные данные начинают пропадать...
17 дек 16, 23:53    [20017092]     Ответить | Цитировать Сообщить модератору
 Re: MS SQLSERVER занимает почти 100% ресурсов  [new]
umrbek79
Member

Откуда:
Сообщений: 12
umrbek79
а потом потребление ресурсов этим процессом достигает почти 1005%

очепятка - 100%
17 дек 16, 23:55    [20017100]     Ответить | Цитировать Сообщить модератору
 Re: MS SQLSERVER занимает почти 100% ресурсов  [new]
Mike_za
Member

Откуда: Москва
Сообщений: 1176
Типа нагруженный продакшен с реальными задачей... А вы там каким боков в каком качестве оказались, без знания скл?
18 дек 16, 00:19    [20017167]     Ответить | Цитировать Сообщить модератору
 Re: MS SQLSERVER занимает почти 100% ресурсов  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1867
umrbek79
Кстати, после перезапуска SQL сервера все работает отлично полдня, а потом потребление ресурсов этим процессом достигает почти 1005%, а занимаемая память увеличивается больше 3 гб и запросы висят и отправленные данные начинают пропадать...

Вы планы запросов смотрели?
Логично, что если нет индексов и он валит table scan вам и 100% и 3 Гб не хватит.
18 дек 16, 01:02    [20017284]     Ответить | Цитировать Сообщить модератору
 Re: MS SQLSERVER занимает почти 100% ресурсов  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 32174
umrbek79
Что можете посоветовать?
Если вы разработчик этого софта, и администратор сервера, то вы должны быть в состоянии контролировать работу сервера.
Смотреть профайлером нагрузку, смотреть всякие статистики.
Что значит "о количестве одновременных подключений к серверу остается только догадываться..."? Посмотрите, постройте график за сутки по количеству подключений, по количеству запросов, ну и т.д.
umrbek79
У меня все таблицы не индексированы. Я опасаюсь, может это влияет на производительность сервера?
Конечно. Любой запрос приводит к тому, что сервер перебирает все записи с первой по последнюю, и сравнивает значения полей. Даже если запрос примитивный, и касается вообще одной записи из таблицы.

В общем, учить, читать, пробовать, оптимизировать :-)
18 дек 16, 12:11    [20017579]     Ответить | Цитировать Сообщить модератору
 Re: MS SQLSERVER занимает почти 100% ресурсов  [new]
umrbek79
Member

Откуда:
Сообщений: 12
Спасибо всем за ответы. Проверяю запросы, попробую уменьшить запросы, которые занимают много процессорного времени.
У меня вопрос насчет индексации.
alexeyvg
Любой запрос приводит к тому, что сервер перебирает все записи с первой по последнюю, и сравнивает значения полей.

Вот это меня и тревожит.
Таблица учеников содержит текстовое поле "Код", другие таблицы связаны с этой по полю "Код". Но он содержит не уникальные значения. Записи в таблице ученики добавляются или меняются почти каждый день. Имеет ли смысл добавить не скалярный индекс по полю "Код" в таблицу ученики?
18 дек 16, 20:00    [20018543]     Ответить | Цитировать Сообщить модератору
 Re: MS SQLSERVER занимает почти 100% ресурсов  [new]
Mike_za
Member

Откуда: Москва
Сообщений: 1176
umrbek79
Спасибо всем за ответы. Проверяю запросы, попробую уменьшить запросы, которые занимают много процессорного времени.
У меня вопрос насчет индексации.
alexeyvg
Любой запрос приводит к тому, что сервер перебирает все записи с первой по последнюю, и сравнивает значения полей.

Вот это меня и тревожит.
Таблица учеников содержит текстовое поле "Код", другие таблицы связаны с этой по полю "Код". Но он содержит не уникальные значения. Записи в таблице ученики добавляются или меняются почти каждый день. Имеет ли смысл добавить не скалярный индекс по полю "Код" в таблицу ученики?

имеет смысл почитать про номализацию.
Это точно не курсовая работа?
18 дек 16, 21:09    [20018689]     Ответить | Цитировать Сообщить модератору
 Re: MS SQLSERVER занимает почти 100% ресурсов  [new]
o-o
Guest
umrbek79
Имеет ли смысл добавить не скалярный индекс

Не скалярный это какой, векторный что ли?
Не, думаю, скалярного хватит
18 дек 16, 23:06    [20019153]     Ответить | Цитировать Сообщить модератору
 Re: MS SQLSERVER занимает почти 100% ресурсов  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 32174
umrbek79
Таблица учеников содержит текстовое поле "Код", другие таблицы связаны с этой по полю "Код". Но он содержит не уникальные значения. Записи в таблице ученики добавляются или меняются почти каждый день. Имеет ли смысл добавить не скалярный индекс по полю "Код" в таблицу ученики?
Не знаю, что такое скалярный и не-скалярный индексы :-)

Индексы добавляются для конкретных запросов, для их ускорения. "В общем" нельзя ответить, нужен индекс, или нет.

umrbek79
Таблица учеников содержит текстовое поле "Код", другие таблицы связаны с этой по полю "Код". Но он содержит не уникальные значения.
Связаны - это как?
Другие таблицы ссылаются на записи из таблицы "учеников" по полю "код"? На какие записи они "ссылаются", интересно, если это поле не-уникально?

В общем, ваш вопрос по модели базы данных так же "конкретен", как и вопрос по оценке конфингурации железа по фоточке таск-менеджера :-)

Всё равно что на форуме врачей выложить грустную фоточку с просьбой прописать какие -нибудь таблеточки :-)
19 дек 16, 09:56    [20020084]     Ответить | Цитировать Сообщить модератору
 Re: MS SQLSERVER занимает почти 100% ресурсов  [new]
umrbek79
Member

Откуда:
Сообщений: 12
Так как все пользователи активно отправляют данные на сервер функцией SQLBULKCOPY я все таки хочу попробовать заменить его чем-то.
Что можете предложить использовать вместо SQLBULKCOPY?
Я сейчас делаю так: создаю временную таблицу, туда с SQLBULKCOPY отправляю данные из десктоп приложения, потом оттуда добавляю записи в основную таблицу (INSERT...FROM...).
Скорость интернета 128-256 кбс.
19 дек 16, 23:02    [20024969]     Ответить | Цитировать Сообщить модератору
 Re: MS SQLSERVER занимает почти 100% ресурсов  [new]
Mike_za
Member

Откуда: Москва
Сообщений: 1176
umrbek79
Так как все пользователи активно отправляют данные на сервер функцией SQLBULKCOPY я все таки хочу попробовать заменить его чем-то.
Что можете предложить использовать вместо SQLBULKCOPY?
Я сейчас делаю так: создаю временную таблицу, туда с SQLBULKCOPY отправляю данные из десктоп приложения, потом оттуда добавляю записи в основную таблицу (INSERT...FROM...).
Скорость интернета 128-256 кбс.

Секционирование можем предложить.
20 дек 16, 10:43    [20025861]     Ответить | Цитировать Сообщить модератору
 Re: MS SQLSERVER занимает почти 100% ресурсов  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 9162
автор
Скорость интернета 128-256 кбс.


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

2 ядра - это очень мало для 500 пользователей. У Вас нет индексов, поэтому сервер тратит много времени просто на пролистывание таблиц запись за записью и дисковые операции.
20 дек 16, 11:29    [20026155]     Ответить | Цитировать Сообщить модератору
 Re: MS SQLSERVER занимает почти 100% ресурсов  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 32174
umrbek79
Что можете предложить использовать вместо SQLBULKCOPY?
Это самый быстрый метод.
20 дек 16, 17:56    [20028642]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить