|
0 / 0 / 0
Регистрация: 20.08.2015
Сообщений: 11
|
|
MS SQLSERVER занимает почти 100% ресурсов17.12.2016, 03:36. Показов 11402. Ответов 20
Метки нет (Все метки)
Привет, народ!
У меня проблема с MS SQLSERVER на клауд сервере. Параметры сервера 2 ядра, 4 гб ОЗУ. Server 2009 R2 SP1, SqlServer 2012 Стоит только SQlServer, даже антивируса нет. Сама проблема: ЗАпись на SQLSERVER происходит в основном через десктоп-приложение, а отчеты пользователи получает через наш сайт. Как видно на скриншоте SQLSERVER занимает почти 3 гб ОЗУ и почти 100% ресурсов. В это время было активных около 100 пользователей чтения-записи на SQLSERVER. Я хотел узнать, это правильно, что со 100 активными пользователями SQLSERVER так занимает ресурсы? Скоро у нас будут более 500 активных пользователей, какую конфигурацию клауд сервера (или выделенного сервера) вы могли бы порекомендовать? Заранее спасибо.
0
|
|
| 17.12.2016, 03:36 | |
|
Ответы с готовыми решениями:
20
Можно ли открыть Бд SQLServer 2012 в SQLServer 2005 Размер приложения превышает размер ресурсов почти на 100 Мб Svchest.exe занимает почти 500mb памяти |
|
14138 / 9362 / 1350
Регистрация: 21.01.2016
Сообщений: 35,201
|
|
| 17.12.2016, 07:45 | |
|
Сильно общий вопрос. Это как диагностировать болезнь по фотографии. Один бог знает что у вас там в базе творится, какие запросы посылаются, что и как хранится. Может всё триггерами усеяно, а все запросы имеют вид "SELECT * FROM" + миллионы "JOIN".
В общем, никакой конкретики тут не будет. Профилируйте работу своих приложений с БД, смотрите откуда растут ноги у такого потребления ресурсов.
1
|
|
|
1274 / 975 / 113
Регистрация: 12.01.2010
Сообщений: 1,971
|
|
| 17.12.2016, 17:38 | |
|
и пожирание памяти кстати не показатель ничего вообще, забудь о ней
он сожрет столько сколько дадут, запросто может пожирать даже больше чем сама БД на диске, а может и не пожирать если ограничить и ничего от этого никуда не отвалится Добавлено через 4 минуты причем порой даже не можно, а нужно ограничивать, т.к у винды начинается паника когда кончается память сам по себе сервер умеет вовремя остановится (толи 80, толи 90 процентов), но вот учитывать другие приложения он ясное уже не может так что если какой-нибудь w3wp.exe тоже захочет памяти там начнется драка и в итоге все участники скатятся в своп, нагрузят диск, повиснут запросы и понеслась
0
|
|
|
Хитрая блондиночка $)
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
|
||
| 17.12.2016, 17:46 | ||
|
Если отключить всех клиентов - сервер будет столько кушать? Клиентское ПО не может ввергать его пучину "трудолюбия"?
0
|
||
|
0 / 0 / 0
Регистрация: 20.08.2015
Сообщений: 11
|
||||
| 17.12.2016, 23:54 [ТС] | ||||
|
Спасибо за ответы.
Попробую объяснить работу сервера. На сервере находится база данных учеников. Клиентское ПО отправляет данные посещаемости учеников за день. Таблица посещаемости маленькая конечно, там только код ученика и время посещения занятий. Таблица посещаемости отправляется на сервер с помощью функции SQLBULKCOPY. Таких учебных заведений, т.е. клиентов сервера около 500 (будет еще больше). На сайте с помощью SQL запросов создаются отчеты и вычисляются проценты посещаемости по каждому учебному заведению. Любой пользователь может зайти на сайт и посмотреть отчет. Таким образом, о количестве одновременных подключений к серверу остается только догадываться... Я сам еще новичок по работе с MS SQL сервером. У меня возник вопрос: все форумы говорят об индексации. У меня все таблицы не индексированы. Я опасаюсь, может это влияет на производительность сервера? ![]() А насчет запросов, "select *" я избегаю, а JOIN ы там несколько, т.е. "ученик+посещаемость+школа+город+область " вот как-то так... Одно клиентское подключение с инсертом SQLBULKCOPY заставляет работать сервер на 15-20% ресурсов, но это только, когда запрос активен. Что можете посоветовать? Добавлено через 10 минут Кстати, после перезапуска SQL сервера все работает отлично полдня, а потом потребление ресурсов этим процессом достигает почти 100%, а занимаемая память увеличивается больше 3 гб и запросы висят и отправленные данные начинают пропадать...
0
|
||||
|
1274 / 975 / 113
Регистрация: 12.01.2010
Сообщений: 1,971
|
|
| 18.12.2016, 00:16 | |
|
на твоем месте я бы в первую очередь выплил SQLBULKCOPY, не знаю как он работает, но будь я на месте мелкомягких реализующих такую фичу - я бы сделал отключение всего, т.е статистики, индексов, триггеров, внешних ключей и т.п, затем вставку напрямую в талицу и затем пересчет всего сразу
SQLBULKCOPY это предел производительности позволяющий добавлять >=10 тысяч записей в секунду, а со смешными 500 строк справится обычный insert за мгновение(разумеется если там нет blob на 10мб) мне думается если 50 человек сделают такую вставку вполне возможен такой треш...
0
|
|
|
14138 / 9362 / 1350
Регистрация: 21.01.2016
Сообщений: 35,201
|
||
| 18.12.2016, 05:59 | ||
|
А вот с индексами не всё так просто. Они действительно скажутся на производительности, но не обязательно в лучшую сторону. Создание и обновление индекса - процедура ни разу не бесплатная в плане затрат процессорного времени. Индексировать имеет смысл только те таблицы, данные в которые заносятся редко, и в основном происходит чтение. И колонки индексировать нужно только с уникальными значениями, иначе от индекса толку не будет. Рекомендую основательно об этом почить, прежде, чем браться. Кстати, большое количество JOIN-ов можно заменить индексированной вьюшкой (VIEW), что даст прирост производительности, но это, опять же, при должном понимании вопроса. А в остальном, пока что, всё тоже - профилируй, смотри что где да как.
0
|
||
|
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
|
|
| 18.12.2016, 12:47 | |
|
Umrbek79, на глупости про, якобы, проблемы с SQLBULKCOPY можете не обращать внимания. Не в этом дело.
Для начала, запустите Activity Monitor и наблюдайте за происходящим. 1. 2 ядра на 100 активных пользователей - катастрофически мало. Если не хватает процессорных ресурсов, в Activity Monitor в Resource Waits в топе будет тип ожидания SOS_SCHEDULER_YIELD 2. Отсутствие необходимых индексов приводит, при выполнении запросов, к вычитыванию таблиц целиком. Вкратце, это негативно сказывается на производительности запросов, увеличивается конкуренции читатели-писатели, неэффективно используется буферный кеш и еще много чего. Глупости про падение производительности записи из-за индексов можете смело игнорировать, - у вас слишком маленькая нагрузка, чтобы заметить такое падение. Глупости про бесполезность неуникальных индексов так же смело игнорируйте. Итого: вам, судя по всему, придется наращивать аппаратные ресурсы сервера, проводить редизайн БД в части индексов и заниматься оптимизацией запросов. Т.к. необходимых опыта и знаний у вас пока что нет, оптимальным будет разово нанять специалиста для этой работы. Заодно и поучитесь у него. Добавлено через 7 минут Если таблица, куда заливаются данные, будет проиндексирована, SQLBULKCOPY, без включения флага трассировки 610, станет эквивалентен обычному INSERT. Продолжать пользоваться BULK COPY или нет, зависит от объема добавляемых данных.
0
|
|
|
14138 / 9362 / 1350
Регистрация: 21.01.2016
Сообщений: 35,201
|
||
| 18.12.2016, 12:58 | ||
|
invm, т.е. можно и нужно смело индексировать всё подряд и это только на пользу пойдёт в любом случае?
0
|
||
|
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
|
|||
| 18.12.2016, 15:13 | |||
|
0
|
|||
|
Хитрая блондиночка $)
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
|
||
| 18.12.2016, 15:13 | ||
|
Я бы не была так категорична по поводу пересчетов статистик даже если индексация делается по какой-то суперскоросной типа RushMore технологии. Нельзя сбрасывать со счетов индексацию, которая мешает вставкам.
0
|
||
|
14138 / 9362 / 1350
Регистрация: 21.01.2016
Сообщений: 35,201
|
||||||
| 18.12.2016, 15:18 | ||||||
|
0
|
||||||
|
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
|
|||||
| 18.12.2016, 16:05 | |||||
|
Вы же категорично и безосновательно заявили - "Индексировать имеет смысл только те таблицы, данные в которые заносятся редко, и в основном происходит чтение". Про не менее категоричное высказывание о неуникальных индексах вообще молчу. Проектирование индексов основано не на частоте "занесения данных", а на оценке насколько выигрыш от их использования при чтениях превосходит накладные расходы на их поддержание. И насколько вообще эти накладные расходы допустимы. ТС написал какие данные он вставляет. Можете оценить объем этих данных и частоту вставки. И потом сделать вывод о величине нагрузки и насколько просядет производительность при наличии индексов.
1
|
|||||
|
14138 / 9362 / 1350
Регистрация: 21.01.2016
Сообщений: 35,201
|
||||||
| 18.12.2016, 17:20 | ||||||
|
А вот про то, что не изменение скорости записи при наличие индексов я бы хотел узнать побольше. Ты из личного опыта это подчерпнул или как? Просто мне всегда казалось, что содержать (и обновлять) дополнительную коллекцию данных это как бы сложнее, чем этого не делать. Если бы это было на 100% эффективно, то речи бы об этом ни шло, и индексы использовались для каждого поля по умолчанию. Мне просто очень интересно откуда вырисовывались такие категоричные заявления про глупости. Т.е. от тебя самого пришло, что: И в чём тут ценная мысль и ценный совет?
0
|
||||||
|
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
|
|||||||
| 18.12.2016, 18:10 | |||||||
|
0
|
|||||||
|
0 / 0 / 0
Регистрация: 20.08.2015
Сообщений: 11
|
|
| 18.12.2016, 20:22 [ТС] | |
|
Спасибо всем за ответы.
Насчет SQLBULKCOPY. Я использую эту функцию для вставки записей в таблицы. Так как у нас скорость интернета небольшая (128-256кбс), построчная вставка данных в удаленный сервер 1000 записей (с полем двоичных данных, который содержит рисунок ученика) занимает более часа времени. А с SQLBULKCOPY это занимает 5-6 минут. Так что я просто не могу от него отказаться. У меня возник вопрос насчет индексации. Таблица учеников содержит текстовое поле "Код", другие таблицы связаны с этой по полю "Код". Но он содержит не уникальные значения. Записи в таблице ученики добавляются или меняются почти каждый день. Имеет ли смысл добавить индекс по полю "Код" в таблицу ученики?
0
|
|
|
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
|
||
| 18.12.2016, 20:58 | ||
|
0
|
||
|
Хитрая блондиночка $)
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
|
||
| 18.12.2016, 22:35 | ||
|
Почему не использовать файловое хранилище, а в БД хранить только пути к ним?
0
|
||
|
0 / 0 / 0
Регистрация: 20.08.2015
Сообщений: 11
|
|
| 19.12.2016, 23:02 [ТС] | |
|
Так как все пользователи активно отправляют данные на сервер функцией SQLBULKCOPY я все таки хочу попробовать заменить его чем-то.
Что можете предложить использовать вместо SQLBULKCOPY? Я сейчас делаю так: создаю временную таблицу, туда с SQLBULKCOPY отправляю данные из десктоп приложения, потом оттуда добавляю записи в основную таблицу (INSERT...FROM...). Скорость интернета 128-256 кбс.
0
|
|
|
14138 / 9362 / 1350
Регистрация: 21.01.2016
Сообщений: 35,201
|
|||
| 20.12.2016, 06:41 | |||
![]() Если бы у меня возникла необходимость делать что-то подобное, то первое, что я бы сделал - спрятал СУБД за сервисом WCF или WebApi. И уже силами этого сервиса контролировал количество одновременно отправляемых в БД данных. Ну или постарался бы пересмотреть схему БД (о которой до сих пор мало, что известно). Или выбрал бы тариф с более мощным железом. Или все три варианта сразу. В общем, пока у тебя на руках нет точного диагноза с пониманием где именно у тебя в БД проблема (какие именно запросы себя плохо ведут и почему), то конкретного совета не будет. По-моему, я это уже говорил ![]() Было бы неплохо, если бы ты выложил схему БД и код, который с этой БД работает. Тогда у знающих людей было бы больше простора для выводов и оценок.
0
|
|||
| 20.12.2016, 06:41 | |
|
Помогаю со студенческими работами здесь
20
Таймер времени через поток занимает 25 % ресурсов процессора Update более 100 000 записей занимает свыше 10 часов ОЗУ и Поцессор нагружены почти на 100% Загрузка цп почти 100, торможение компьютера Обращение к HDD почти 100% процессом system Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|