Элементарный способ ускорить вашу 1С в два-три раза


Как ни странно, для меня оказалось открытием, что скорость работы 1С (всех процессорных задач) можно ускорить более чем в два раза элементарной настройкой Windows.

Долго гадал, почему из трех практически идентичных компьютеров Core I7 одного и того же поколения 1С на двух работает быстро, а на третьем существенно медленнее.

Так как там серверная БД, пришлось серьезно вникать в анализ производительности БД, купил даже курс
"Ускорение и оптимизация систем на 1С:Предприятие 8.3"  и кстати не сочтите за рекламу — очень доволен остался… Парни просто профи в вопросе и умении излагать материал…
По советам из этого курса внедрил подсистему, фиксирующую время выполнения операций и стал изучать на 3х секундном процессе открытия определенной формы сколько тратится на запрос БД /процессорную обработку / Передачу данных на клиент.

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

Конечно же, поменял сервера местами, снова измерил время работы и выяснил что одинаковые сервера с чрезвычайно похожими сетапами дают разное время открытия формы. Хоть тресни.

Пошел к бородатому и чрезвычайно толковому сисадмину, рассказал про этот парадокс и он дал ответ, от которого во мне что-то перевернулось…

А я говорит, в одном сервере на днях в настройках электропитания поставил режим "Высокой производительности". Ну или в дополнительных параметрах питания, нашел раздел "Управление питанием процессора" — "Минимальное состояние процессора" — и поставил настройку 100%


 

Каково же было мое удивление, когда я замерил скорость открытия формы…

Ускорение и оптимизация систем на 1С:Предприятие 8.3

 

Я думаю, пояснять этот график не надо….

Конечно, грамотный айтишник скажет, что еще в БИОС надо выставлять максимальную производительность процессора, что бы в Windows уже не требовалось за этим следить. Но для сервера лезть в БИОС это целая история, причем ночная… А изменить сделать предложенную настройку настолько просто и очевидно — что стало стыдно за то, что потребовалось так много лет, что бы дойти до этой простой истины…

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

— Использование скоростного SSD (можно SATA3, можно M.2)

— Запас оперативной памяти

— Windows тоже ставить на SSD или же обязательно переносить на SSD диск
     — файл подкачки
     — КЭШ сервера 1С (в реестре отредактировать команду запуска сервера)
     — Терминальных пользователей вынес в отдельную виртуальную машину (тоже на SSD)
     — Если используем решения на "обычных формах" — то никакой PostgreSQL — только MS SQL (Реагирую на гневный комментарий… — дело, конечно не в формах, а в технологии запросов, которые применялись в старых конфигурациях, когда допускалось соединение виртуальных таблиц без их предварительной записи во временную таблицу). 

— Если решение на управляемых формах, то используем Web сервер для доставки приложения. Особенно заметно на файловых базах — ускорение получается даже на том компьютере, где лежит эта база (что казалось бы парадокс). А у сетевых клиентов — просто космос!!!

— Регулярное тестирование БД с пересчетом итогов.

— Если SQL — не забываем про регламентное обслуживание SQL базы.

По рекомендации пользователя PerlAmutor  в комментариях — обращаю внимание на сведения от 1С https://its.1c.ru/db/metod8dev/content/5904/hdoc

Также рекомендую прочитать статью Скорость работы 1С8 файловой по сети

42 Comments

  1. vano-ekt

    [:||||:]

    Reply
  2. nvv1970

    Кэп, кэп, кэп. Про это уже написано, рассказано… много много.

    Перепечатка курса?

    Про pg vs ms хрень полная. Автор выставляет себя дилетантом. И как можно путать формы, режим приложения и режим блокировок?

    Reply
  3. Aleksey81

    Про Postgre vs MS не хрень. Выполнение запросов в старых конфигурациях, где не используют временные таблицы, а делают сразу объединение виртуальных таблиц на postgre делается неэффективно и по времени в 3-5 раз медленнее. Это зафиксировано в официальной документации и хорошо видно при формировании прайс листа в УТ 10 в двух разных sql.

    Reply
  4. Aleksey81

    (2) И поясните, пожалуйста, где были перепутаны «формы», «режим приложения», и «режим блокировок»?

    Reply
  5. Aleksey81

    (4) Попробую угадать. Вам не понравилось упоминание о неэффективности использования PostGre на приложениях с обычными формами. Что ж. Это понятно. Здесь, вероятно, надо было указать длинную цепочку событий:

    Обычные формы -> это старые конфигурации -> 1С в старых конфах использовала старую методологию в запросах -> В таких конфигурациях не редкость объединение виртуальных таблиц без их предварительного выделения во временные -> PostGre медленно работает, если использовалась эта «старая» методология. -> в старых конфах PostGre не эффективен.

    Reply
  6. insurgut

    Делается уже на автомате, когда в плане энергосбережения ставишь Высокая производительность, чтобы компьютер не засыпал.

    Reply
  7. PerlAmutor

    На всякий случай, если кто-то попал сюда в поисках решения с производительностью сервера кидаю ссылку на ИТС, где упоминается в том числе и режим повышенной производительности: https://its.1c.ru/db/metod8dev/content/5904/hdoc (информация по ссылке не полная, остальные твики в гугле).

    Reply
  8. Aleksey81

    (7) Спасибо, добавлю в публикацию, если вы не против

    Reply
  9. PerlAmutor

    (8) Я только ЗА.

    Если кто-нибудь напишет утилиту или скрипт позволяющий делать подобные настройки на этапе установке сервера 1С в автоматическом режиме, было бы замечательно.

    Reply
  10. Aleksey81

    (10) И тебе привет, Андрей!

    Reply
  11. Aleksey81

    (9) Если кто-нибудь напишет утилиту…. Остальные будут бояться ее запускать… Особенно в эпоху вирусов-шифровальщиков….

    Reply
  12. PerlAmutor

    (12) Есть github, пожалуйста, выкладывайте исходники, будем сами собирать.

    Reply
  13. maxim_1c

    Спасибо автору, наткнулся на публикацию буквально в тот момент, когда у меня выполнялась ресурсозатратная операция. Настроил сервер — сэкономил время.

    Reply
  14. CheBurator

    Автор, видимо, или молод или стар настолько, что успел забыть больше чем знал 😉

    про режим энергосбережения лет наверное десять назад еще Павел Баркетов из СофтПоинта подробна на своих очных семинарах и рассказывал и вживую показывал…

    https://www.youtube.com/watch?reload=9&v=OXuagO8JrRg

    Reply
  15. Adilgeriy

    ну еще можно базу на диск в памяти положить. еще быстрей. M2 только самсунг 970 pro

    Reply
  16. Vlx

    Может конечно и очевидные вещи. И уже об этом говорилось ранее.

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

    Автор провел практическую работу, сделал замеры и говорит, что есть положительный эффект.

    Поэтому публикация однозначно +.

    Reply
  17. starik-2005

    Бородатый админ — маст хэв!

    Вообще, про режим высокой производительности я пишу в комментариях примерно раз в неделю — до сих пор, оказывается, есть народ, который не знает, почему это 1С (и не только) начинает работать быстрее раза этак в два. Автор, ты-то хоть знаешь, почему?

    Reply
  18. Vlx

    (16)

    M2 только самсунг 970 pro

    Т.е. не хуже, чем 970. Так следует понимать?

    Reply
  19. w.r.

    Знал про это. Но главное никогда об этом не забывать ) Автору спасибо!

    Reply
  20. Ziggurat

    Интересная и полезная статья. Новый, достаточно сложный материал изложен грамотно и доходчиво! Автор, огромное спасибо.

    Reply
  21. Adilgeriy

    (17)да их скорость чтения/записи в 6-8 раз превосходит ssd на sata

    Reply
  22. DarkAn

    (0)

    купил даже курс «Ускорение и оптимизация систем на 1С:Предприятие 8.3»

    . Читая автора сложилось впечатление, что курс только куплен, но не пройден (с домашними заданиями), т.к. в данном курсе о данной настройке так же говориться.

    PS Я, про «Этот курс». Спасибо за курс Андрею и всей команде портала за его доступность, как в денежной, так и в интеллектуальной составляющей.

    Reply
  23. shard

    а где про использование Web сервера для доставки приложения почитать можно?

    Reply
  24. Aleksey81

    (23) Вы правы, осилил пока только четверть курса.

    Reply
  25. Aleksey81

    (24) Да, конечно. https://infostart.ru/public/646384/

    Reply
  26. Gilev.Vyacheslav

    А сколько Алексея ждет открытий когда он научится план запроса анализировать, да виртуалку настраивать…

    Reply
  27. Aleksey81

    (27) Сделаю себе это подарком на новый год 🙂

    Reply
  28. frkbvfnjh

    Спасибо за статью! В жизни всегда так — пока сам не разберешься, никто помочь не может, а как разберешься так сразу баян! Никого не слушай, особенно тех кто про баяны поет. Правильно сделал, что статью написал.

    Reply
  29. F1215

    Спасибо за статью. В принципе все это не раз пережовывалось но здесь хоть читать приятно

    Reply
  30. Aleksey81

    (29) Договорились, экспертов по баянам слушать не буду. Спасибо за добрые слова.

    Reply
  31. herfis

    Мастерство заголовка, блин.

    «Где можно натупить с настройкой сервера и просесть в производительности в два-три раза» — было бы ближе к телу.

    Reply
  32. VasilVtoroy

    На всякий случай. M2 это форм-фактор диска(даже семейство форм-факторов), а sata — протокол. Есть, и не мало, ssd в форм-факторе m2, которые работают по протоколу sata.

    Более быстрый протокол называется NVM.

    Reply
  33. _Enot_

    Спасибо за статью.Полезная. Возьму на вооружение

    Reply
  34. rovenko.n

    (18)А на файловых базах поможет? Часто для скорости приходится что-то тестировать до того, как на сервер обновления загружат.

    Reply
  35. starik-2005

    (35)

    А на файловых базах поможет?

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

    Reply
  36. Созинов

    В принципе все очевидно, но напомнить никогда не мешает. Статья кратенько так написана, в самый раз чтобы вспомнить. Автору плюс. По PG vs MS можно подробнее, где и что написано, кто проводил замеры?

    Reply
  37. Aleksey81

    Замеры проводил я лично. А где написано — искать надо. Год назад это очень внимательно изучал. Теорию уже не найду, а практику — очень легко воспроизвести самому.

    Reply
  38. nvv1970

    (5) только наверно не объединение, а соединение)

    Я за точность высказываний. Чтобы человек, не понимающий темы не делал смысловой привязки к формам. Потому что этим человеком может оказаться заказчик, который увидит ОФ и сделает абсолютно идиотский вывод плохой работе ПГ.

    Спасибо за исправление. Извините за резкость и «гневность»)))

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

    Справедливости ради замечу, что такой сильной корреляции между формами и качеством запросов я не замечал. Наверно потому что в УФ ПГ тоже часто отказывается работать. Соединения со срезами, по два полных соединения в запросе и т.д. Последние конфигурации для РФ вроде хороши, но локализованные решения или сильно отстают, или сделаны некачественно. Поэтому для меня нет такой аналоги с формами и не будет никогда.

    Reply
  39. user1090556

    что подразумевается под » — КЭШ сервера 1С (в реестре отредактировать команду запуска сервера)»?

    Reply
  40. Aleksey81

    (40) Это значит, что в реестре нужно найти ветку [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices1C:Enterprise 8.1 Server Agent] в которой лежит команда запуска сервера ImagePath = «C:Program Files (x86)1cv88.3.13.1644in
    agent.exe» -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d «C:Program Files (x86)1cv8srvinfo» -debug

    Кстати именно в ней мы ставим флаг -debug.

    Посмотрев внимательно на эту строку увидим такой поддекст: -d «C:Program Files (x86)1cv8srvinfo». В этом каталоге вы как раз и найдете «серверный» кэш всех использовавшихся вами баз.

    Reply
  41. user1090556

    (41) обычно debug я ставлю в такой последовательности, и отладка работает: «C:Program Files1cv88.3.13.1644in
    agent.exe» -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -debug -d «C:Program Files1cv8srvinfo»

    Имеется ввиду что кэш можно перенести на другой диск ускорив тем самым работу сервера?

    Reply
  42. Aleksey81

    (42) Сам по себе перенос кэша имеет смысл только если системный диск перегружен, а диск на который переносите — способен работать в разы быстрее.. Что касается порядка команд — это едва ли имеет значение.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *