none
подвисание базы SQL RRS feed

  • Вопрос

  • Базы 1С размещены на SQL сервере. Во время выполнения бэкапов лога транзакций наблюдается подторомаживание баз.

    Бэкап настроен каждые 5 минут. Пользоваетелей очень немного - активных около 5. + 2-3 малоактивных. Размер баз небольшой. 4 штуки около 1 Гигабайта. Одна база 20 ГБ. Та, что 20 ГБ подтормаживает посильнее. Базы были сделаны так, что свободного места в них около половины. Размер расчитывали : делали реструктуризацию в 1с базы расширились до данных размеров их и оставили. Сделали "перезаливку", сейчас база из одного фрагмента изначально заданный размер то есть. фрагментации быть не должно. Интересно, на чуть более слабом сервере такого не было но и лог транзакций не делался была простая модель.

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

    23 сентября 2014 г. 12:32

Ответы

  • Добрый день 

    Из вашего описания - у вас 1С и SQL находятся на одном сервере. Со стороны 1С сервера добавьте рабочие процессы. Со стороны SQL сервера установите ограничение на использование оперативной памяти  до 6 GB. Оставшиеся 6 GB нужны серверу 1С и 4 Gb операционной системе. 

    "Дисковую подсистему улучшать не планируем." Все же со временем вам придется изменить ваши планы. Разнесение файлов базы и лога транзакций на разные физические диски желательно на raid 10 скажется на производительности-проверено на практике. Также имеет смысл вынесение tempDB на отдельный физический диск - лучше SSD. Оптимизация производительности SQL одна из обязанностей администратора баз данных. Если такого в штате нет, тогда ищите в сети на эту тему много информации.

    Для базы 1С размером 20 Gb требуется выполнение ежедневных регламентных операций на SQL сервере (обновление статистики, дефрагментация и реиндексация индексов). 

    Реорганизация и перестроение индексов

    Обновление статистики

    "в процессе наблюдения выяснилось, что это только одна машина-клиент так плохо себя ведет, на остальных жалоб не выявлено." Все зависит от того, как клиент запускает 1С- на сервере 1С напрямую или запустил Толстый клиент на компе? Если запускает на сервере, то там конечно же будет быстрее, если же Толстым клиентом там все не так просто - все зависит от скорости компа: RAM, CPU, антивирус и тд.  При активных сеансах  более 10 человек рекомендация только одна - сервер терминалов. 

    Удачи.

      

    9 октября 2014 г. 4:58

Все ответы

  • По вашему описанию вероятнее всего то, что вы упираетесь в производительность дисковой подсистемы. Попробуйте подтвердить это предположение анализом длины очереди к дискам с данными до, после и во время бекапа tlog.
    Какая у вас версия mssql? Если 2008 и выше, попробуйте включить сжатие резервных копий, если ещё не сделали этого. Это снизит нагрузку на I/O.

    И что у вас с buffer cache? И сколько вообще памяти есть?

    • Изменено Roman Sergeev 23 сентября 2014 г. 13:59
    23 сентября 2014 г. 13:56
  • по производительности I/O, как и на процессор, память : можно сказать что простаивает сервер в моменты создания tlog! Извиняюсь, что сразу не посмотрел.

    по нагрузке на I/O: не больше 2% (счетчик времени бездействия диска - значения не меньше 98%, другие  счетчики, более точные, нет смысла смотреть)

    на процессор не более 25 %, на память - всего памяти 16 ГБ процесс сиквела около 3Гб занял (наврено нужно его ограничить будет позже), процесс сервера 1С 0,5 ГБ это по счетчику "Память(частный, рабочий набор)"

    mssql 2012.

    в процессе наблюдения выяснилось, что это только одна машина-клиент так плохо себя ведет, на остальных жалоб не выявлено.

    И, интересно, на той машине нет ошибок диска и большой нагрузки, очереди диска. Софт переустанавливали, единственное еще память не тестировали.
    Видимо с ней что-то продолжать выяснять....
    И вопрос по поводу, до скольки можно ограничить использование ОЗУ сервером sql 2012?

    25 сентября 2014 г. 10:17
  • Добрый день 

    Из вашего описания - у вас 1С и SQL находятся на одном сервере. Со стороны 1С сервера добавьте рабочие процессы. Со стороны SQL сервера установите ограничение на использование оперативной памяти  до 6 GB. Оставшиеся 6 GB нужны серверу 1С и 4 Gb операционной системе. 

    "Дисковую подсистему улучшать не планируем." Все же со временем вам придется изменить ваши планы. Разнесение файлов базы и лога транзакций на разные физические диски желательно на raid 10 скажется на производительности-проверено на практике. Также имеет смысл вынесение tempDB на отдельный физический диск - лучше SSD. Оптимизация производительности SQL одна из обязанностей администратора баз данных. Если такого в штате нет, тогда ищите в сети на эту тему много информации.

    Для базы 1С размером 20 Gb требуется выполнение ежедневных регламентных операций на SQL сервере (обновление статистики, дефрагментация и реиндексация индексов). 

    Реорганизация и перестроение индексов

    Обновление статистики

    "в процессе наблюдения выяснилось, что это только одна машина-клиент так плохо себя ведет, на остальных жалоб не выявлено." Все зависит от того, как клиент запускает 1С- на сервере 1С напрямую или запустил Толстый клиент на компе? Если запускает на сервере, то там конечно же будет быстрее, если же Толстым клиентом там все не так просто - все зависит от скорости компа: RAM, CPU, антивирус и тд.  При активных сеансах  более 10 человек рекомендация только одна - сервер терминалов. 

    Удачи.

      

    9 октября 2014 г. 4:58