8.х Шаги улучшения производительности 1С+SQL

Тема в разделе "Установка платформы "1С:Предприятие 8"", создана пользователем ISuraev, 14 май 2013.

  1. TopicStarter Overlay
    ISuraev
    Offline

    ISuraev Опытный в 1С

    Регистрация:
    12 авг 2011
    Сообщения:
    142
    Симпатии:
    0
    Баллы:
    26
    Помогите пожалуйста разобраться с основными моментами, чтобы понять в какую сторону двигаться .
    Имеется:
    1) Сервер: 2 камня по 4 ядра (Е5620), рейд 10 на 4 винтах. Рейд разбит на 2 логических диска. На одном система, на другом база
    2) 1С 8.2.15.294+MSSQL2008, пользователи работают по RDP. RDP настроили на другом сервере.
    3) Количество пользователей примерно 80, размер базы 120Гб и увеличивается примерно на 800-900 метров в день.

    Проблема:
    Стали выскакивать блокировки транзакций.

    Сделал регламентные задачи: каждую ночь обновление статистик, реиндексация таблиц и представлений и раз в неделю ребилд индексов. Это помогало, пока эти задачи успевали выполняться за ночь. Теперь уже в отведенный им интервал времени не укладываются, т.к. ночью производится еще и бэкап.

    Шеф дал добро на новый сервер - бюджет до 450 тык.

    Прошу от вас подсказать:
    1. С какими параметрами мне необходим сервер, сколько там должно быть рейдов?
    2. Предлагают твердотельные накопители. Имеет смысл их брать? Если да, то для каких целей?
    3. Как оптимально раскидать файлы по рейдам?
    4. Как мне еще настроить SQL/1С/Винду , чтобы было мне счастье? Прошу просто перечисление необходимых действий, а уж как это делается найду...
  2. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    ошибка в первом же пункте - не имеет смысла разносить файлы базы, журналов и системы на различные логические диски, находящиеся на одном массиве, они должны быть на разных массивах.

    что делать
    - вам нужны 3, а лучше 4 массива
    1. raid 1 - для системы, два небольших по объему диска
    2. raid 0+1 (в такой конфигурации меньше проблем с заменой) - под файлы баз данных (mdf)
    3. raid 0+1 - под файлы журналов транзакций (ldf)
    4. raid 0 - для tempdb - здесь надежность не так критична, нужна скорость

    последний в принципе можно совместить с первым либо вторым в зависимости от режима восстановления ваших баз. если simple - то с третьим, если full - то со вторым, но лучше не стоит

    по поводу ssd - если их и брать, то только серверные, внимательно смотрите характеристики и отзывы - у ssd есть эффект падения производительности в несколько раз при активной записи.

    реорганизацию/реиндексацию имеет смысл делать в зависимости от процента фрагментированности индексов, до 10% - не трогать, 10-30% - реорганизация, более 30% - реиндексация (ребилд), так регламенты быстрее проходить будут

    кстати, а сколько документов-то делаете за день, что такой прирост?
  3. TopicStarter Overlay
    ISuraev
    Offline

    ISuraev Опытный в 1С

    Регистрация:
    12 авг 2011
    Сообщения:
    142
    Симпатии:
    0
    Баллы:
    26
    Большое спасибо.
    К сожалению не знаю как это настроить. В плане обслуживания прописываю задачу "Перестроение индексов", но в настройках вроде нет условия по фрагментированности индексов.

    у нас сеть супермаркетов... порядка 2500 документов в день. Из них тяжелые отчеты о розничных продажах (примерно 30 шт в день)

    1. По процессорам и оперативной памяти, пожалуйста, дайте какие-нибудь рекомендации.
    2. Кроме указанных нужны ли какие-нибудь еще регламентные задачи для SQL и 1С?
    3. Мож кто-нибудь поделится обработкой "АнализРазмеровТаблицМетаданныхРазличнаяСтатистикаОБазе.erf" или подобной. С инфостарта чтобы скачать, требуются публикации....
  4. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    по процессорам - у вас итогом 8 ядер, при 80 пользователях и sql на том же сервере этого в принципе достаточно. по памяти - тут уж чем больше - тем лучше. от 64Gb и вверх, соответственно ОС, SQL и 1С - 64-битные.
    По настройке SQL еще - оставьте для 1с и ОС примерно 16Gb, на размер оставшейся памяти ограничьте SQL - он тогда в своп уходить не будет - лучше пусть лишний раз почитает данные из базы, чем будет гонять страницы памяти на диск и обратно.
    Если поставите 1с 8.2.18, sql 2012, то можно спокойно пользоваться соединением через shared memory - это сильно быстрее, чем tcp-ip, и сможете нормально использовать режим изоляции read commited snapshot, что вполне хорошо сказывается на параллельности некоторых операций, но в этом случае tempdb однозначно на отдельный массив и чем больше дисков будет в страйпе, тем лучше.

    регламентные ребилд/реорганизация индексов от фрагментированности индексов делаются скриптом, такое красиво не настраивается :). если не найду завтра в своих залежах - напишу еще раз и выложу, я думаю, тут это многим пригодится.
  5. TopicStarter Overlay
    ISuraev
    Offline

    ISuraev Опытный в 1С

    Регистрация:
    12 авг 2011
    Сообщения:
    142
    Симпатии:
    0
    Баллы:
    26
    вопросы:
    1. Поставщик серверного оборудования утверждает, если делать первый рейд 0+1 например на 4 винтах и второй рейд 0+1 на 4 винтах, то производительность окажется НЕ ХУЖЕ , чем если сделать один рейд 0+1 на 8 винтах. Так ли это?
    2. Рекомендует для базы один рейд-1 на двух ssd винтах и еще один рейд 0+1 из 6 винтов под все остальное.... и все это на одном встроенном рейд-контроллере.

    3. Комплектация:
    платформа x3650 M4, два камня E5-2650, память 2*8Гб +7*16Гб дополнительно, винты 2 шт. Express IBM 256 SATA 2.5 MLC HS SSD и 6 шт. IBM 300 Гб SFF HS 15K 6Gbps SAS. И все это стоит порядка 500 тык.
    Пугает очень то, что память разная и количество рейдов не такое, что предлагает уважаемый nickpugachev. Может кто что забракует и отговорит?
  6. TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.757
    Симпатии:
    147
    Баллы:
    104
    А у вас какая конфигурация? Что то 120Гб да ещё и с таким приростом...
    Для сравнения в торговой организации БП 2.0 КОРП, 50 пользователей, за 2 года база 6 Гб.
  7. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    может там логи большие и не резанные? посмотрите в свойствах базы на SQL SERVER
  8. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    проблема не в том, что читать/писать будет медленнее или быстрее, проблема в том, что при двух массивах он это делать будет параллельно. наблюдали тут интересный эффект, если основные таблицы базы секционировать и секции раскидать на разные группы на разных массивах r1, то sql таким способом работает быстрее, чем если бы была единая база на одном массиве r0+1 из всех тех дисков. но это опасный эксперимент для боевой базы :), лучше все-таки разнести файлы, с которыми идет работа параллельно, на разные массивы.
    вот это не хорошо, для ОС не имеет смысла сильно шустрые накопители держать, хватило бы даже sata или sas 10000rpm
    при 4 каналах памяти - очень странное решение :) - лучше уж 8х16. я так понял, вам тушку 7915-K5G предлагают
    ну и да, IBM - сильно не дешево. если не привязаны к конкретному вендору, поглядите в сторону того же depo.ru
  9. TopicStarter Overlay
    ISuraev
    Offline

    ISuraev Опытный в 1С

    Регистрация:
    12 авг 2011
    Сообщения:
    142
    Симпатии:
    0
    Баллы:
    26
    сижу, думаю. возник вопрос: нужна ли для файлов журналов транзакций большая скорость? На них идет последовательное добавление информации без всякого поиска. И если это так, то именно их можно смело располагать на массиве с ОС.
    Может сконфигурировать так:
    1) Рейд 1 на 2 SAS винтах по 300 ГБ для ОС и файлов логов базы
    2) Рейд 10 на 4 SSD винтах по 256 каждый для базы
    3) Рейд 0 на 2 SAS винтах по 150 ГБ для temp БД.

    Хотелось пока попробовать выжить на 8 винтах, чтобы не покупать еще одну корзину или на таком количестве винтов в рейдах ничего хорошего я не добьюсь?.
  10. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    с ssd в raid аккуратно - не все контроллеры дают им нормально зачистку на простое провести, может производительность упасть сильно

    ну и в таком варианте - только если базы в режиме восстановления simple
  11. TopicStarter Overlay
    ISuraev
    Offline

    ISuraev Опытный в 1С

    Регистрация:
    12 авг 2011
    Сообщения:
    142
    Симпатии:
    0
    Баллы:
    26
    Как порекомендуете распределить такое количество винтов?.... можно SSD заменить на SAS, пока оборудование не заказали. Как проверить контроллер: нормально ли он работает с ssd?
  12. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    если очень хочется ssd - ставьте их на зеркало, где система живет, но там они сильно не имеют значения
    под базу не стоит - лучше два лишних диска в массив под базу поставьте, если в бюджет вписываетесь
  13. TopicStarter Overlay
    ISuraev
    Offline

    ISuraev Опытный в 1С

    Регистрация:
    12 авг 2011
    Сообщения:
    142
    Симпатии:
    0
    Баллы:
    26
    Убирание ssd наоборот сильно удешевит систему, так что в бюджет легче будет вписываться.
    Тогда:
    Вариант 1:
    1) Рейд 1 на 2 SAS винтах по 300 ГБ для ОС и файлов логов базы
    2) Рейд 10 на 5 SAS винтах по 300 каждый для базы
    3) 1 SSD без рейда на 150 ГБ для temp БД и свапа винды.

    Вариант 2:
    1) Рейд 1 на 2 SAS винтах по 300 ГБ для ОС и файлов логов базы
    2) Рейд 10 на 4 SAS винтах по 300 каждый для базы
    3) Рейд 0 на 2 SAS винтах по 300 ГБ для temp БД и свапа винды..

    Вариант 3:
    1) Рейд 1 на 2 SAS винтах по 300 ГБ для ОС и файлов логов базы
    2) Рейд 10 на 6 SAS винтах по 300 каждый для базы, temp БД.

    Какой бы Вы выбрали?
  14. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Вариант 1 (5-й винт я так понимаю - резерв?)
  15. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    первый вариант лучше, только r10 на 6 винтов, на 5 его не сделаешь :)
  16. TopicStarter Overlay
    ISuraev
    Offline

    ISuraev Опытный в 1С

    Регистрация:
    12 авг 2011
    Сообщения:
    142
    Симпатии:
    0
    Баллы:
    26
    переклинило меня с 5 винтом... Второй рейд действительно на 6, а SSD винт где-нибудь без корзинки прикрутить наверняка можно, чтоб корзину ради одного винта не покупать.
    Спасибо. Берем сервер на тестирование с указанной конфигурацией. Осталось понять как тестировать, но видимо это другая тема.
  17. TopicStarter Overlay
    ISuraev
    Offline

    ISuraev Опытный в 1С

    Регистрация:
    12 авг 2011
    Сообщения:
    142
    Симпатии:
    0
    Баллы:
    26
    Нашел скрипт по реиндексации базы при фрагментировании индексов более 30% (скачал с gilev.ru).
    Код:
    — реиндексация ms sql 2008——————-
    declare @minRows int
    set @minRows = 100
    declare @reindexQuery nvarchar(max)
    set @reindexQuery =
    REPLACE(REPLACE(
    cast(
    (
    select
    ‘ALTER INDEX ‘+idx.name+’ ON ‘+ sc.name+’.'+ t.name+
    CASE
    WHEN st.avg_fragmentation_in_percent > 30 THEN ‘ REBUILD WITH (ONLINE=ON)’
    ELSE ‘ REORGANIZE’
    END as query
    from sys.dm_db_index_physical_stats( DB_ID(),NULL,NULL,NULL,NULL) st
    join sys.tables t on (st.object_id=t.object_id)
    join sys.schemas sc on (sc.schema_id=t.schema_id)
    join sys.indexes idx on (t.object_id=idx.object_id and st.index_id=idx.index_id)
    join sys.partitions p on (p.index_id=idx.index_id and p.object_id=idx.object_id)
    where p.rows > @minRows and st.avg_fragmentation_in_percent > 5
    order by st.avg_fragmentation_in_percent desc
    FOR XML PATH(»), TYPE
    ) as nvarchar(max))
    ,’</query>’,';
    ‘),’<query>’,»)
    print @reindexQuery
    exec (@reindexQuery)
    В сопроводительной статье утверждается, что при реиндексации выполняется обновление статистик. Правильно ли я понял, что отдельную операцию по обновлению статистик можно не выполнять?
  18. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    при ребилде - да, статистика обновляется по тому индексу, который перестроился
  19. TopicStarter Overlay
    ISuraev
    Offline

    ISuraev Опытный в 1С

    Регистрация:
    12 авг 2011
    Сообщения:
    142
    Симпатии:
    0
    Баллы:
    26
    Значит все же полное Обновление Статистик надо проводить...жаль... длительная операция в моей базе. почти 2 с половиной часа.
  20. TorLink
    Offline

    TorLink

    Регистрация:
    25 апр 2011
    Сообщения:
    15
    Симпатии:
    0
    Баллы:
    1
    Попробуйте упростить регламентные задачи:
    1Скрипт-менеджер - простая конфигурация для 1С:Предприятие 8.2., позволяющая просто и эффективно решить насущные задачи, связанные с обслуживанием баз данных в большинстве организаций, использующих MSSQL, в том числе и бесплатную версию Express, не имеющую встроенных средств для настройки обслуживания.
    Весь процесс настройки и установки занимает 15 минут!
    Сайт продукта: _http://scriptmanager.ru

Поделиться этой страницей