Как закрыть зависшую программу. Что делать если программа зависла? Что нужно сделать

1) посмотрите на количество памяти выделяемой rphost на сервере 1С. Если у вас x32 версия сервера то процесс сможет использовать максимум 1, 75 Гб ОЗУ
Если памяти не хватает, то сервер не может принять новые соединения или зависает когда текущему сеансу требуется дополнительная память
www.viva64.com/ru/k/0036
2) Посмотрите настройки "Параметры рабочего сервера" возможно установлены неверные настройки. У меня была такая проблема и сервер постоянно зависал. Мои настройки во вложение. Серверу выделено 11 Гб.
3) Возможны проблемы в настройке Postgressql.

Предоставьте характеристики вашего сервера, размеры баз, конфиги Postgressql. Без информации сказать сложно.

Мой конфиг PostgreSQL: https://drive.google.com/file/d/0B2qGCc-vzEVDMERVW...
данный конфиг подобран под имеющееся количество ОЗУ.
PostgreSQL установлен на Linux, 3 Гб ОЗУ, 3 ядра ЦП.
Сервер 1С8: 11 Гб ОЗУ, 5 ядра ЦП
4 базы размером примерно 1 Гб каждая (выгруженная в dt)

Приведите все характеристики вашего сервера: сервер 1С8 и БД физический или виртуальный, операционка, количество ОЗУ на каждом сервере, ЦП какой, сколько занимают ОЗУ процессы rphost, сколько их? Используете ли вы RAID массив?

Ранее сам использовал PostgreSQL но, в процессе работы столкнулись с некоторыми проблемами при работе базы на PostgreSQL и недавно перешли на MS SQL.

Сервер у вас не плохой для данных баз. Для того чтобы использовать PostgreSQL нужно очень хорошо разбираться в его настройке. Когда базы маленькие многие ошибки настройки "прощаются". Когда мы только начинали внедрять 1С + PostgreSQL у нас тоже были очень частые проблемы с работой БД (были частые зависания, медленно работала). PostgreSQL лучше использовать на Linux, а не на windows. Я сам не спец по БД, для настройки сервера БД мы нанималь специалиста из 1СБит и он нам его настроил и проблем в работе после этого не возникало.

Совет:
Базы у вас большие не поскупитесь наймите спеца по БД который вам сможет её настроить. Один человек не может быть специалистм во всём.

1) давно ли вы делали проверку самой БД и реиндексацию? VACUUM и REINDEX
2) давно ли делали тестирование и исправление базы средствами 1С?
3) файл лога БД вынесен на отдельный HDD?
4) сильно ли нагружен HDD?

Задумайтесь о переходе на MS Sql зачастую он не требует "практически" никакой настройки и его проще использовать. В отличие от PostgreSQL MS Sql готов уже из коробки работать, а PostgreSQL нужно настраивать.

Будут вопросы пишите может смогу чемнибудь помочь в Skype: tisartisar

Наимите спеца по настроке БД

Почему мы перешли на MS SQL:
мы используем конфигурацию УТ и при закрытие месяца иногда возникали ошибки которые никак не удавалось решить. Если перенести базу на файловый режим и запустить закрытие месяца, то всё закрывалось нормально, этуже базу заружали на сервер PostgreSQL при рассчёте себестоимость возникали ошибки. На тот момнет мы на пол года отставали по закрытию месяцев из-за возникновения плавующих ошибок. Создали тестовую базу на MS SQL и месяц который немогли закрыть на PostgreSQL на MS Sql закрылся. Также на PostgreSQL не работает корректно округление цен в прайс листе. По факту работа 1С на PostgreSQL поддерживается, но рекомендуется всётаки использовать MS SQl.
Из-за этого было принято решение перейти на MS SQL т.к. стабильность работы 1С дороже.

Рад что смог помочь, обращайтесь ещё, если будут вопросы и проблемы.

1) сколько памяти выделено MS SQL серверу? это настраивается в самом MS SQL сервере.
2) Тестирование базы средствами 1С делайте регулярно
3) статья как настроить резервное копирование и обслуживание. Это важно и нужно делать регулярно. Я делаю каждый день. Ознакомьтесь со всеми 3 частями руководства.

Если у вас перестала отвечать какая то программа, она не как не реагирует ни на мышь ни на клавиатуру и возможно даже появилась надпись “программа не отвечает”, это и называется зависшей программой.

Иногда бывает так, что зависшая программа не мешает вам работать, а иногда наоборот из за одной зависшей программы может тормозиться работа всей ОС, в любом случае проблему надо решать, надо что то делать.

Чего не нужно делать:

1) Выдергивать вилку из розетки – это самая грубейшая ошибка, которую вы можете совершить в данной ситуации. Резкое прекращение подачи электроэнергии для компьютера является большим стрессом. К этому пункту также относятся выключение компьютера при помощи кнопки пуск на системном блоке, и выключение путем нажатия на выключатель блока питания. Суть у этих способов одна, вы прекращаете подачу электроэнергии.

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

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

4) Ждать очень долго – как правило достаточно подождать пять минут, для того чтобы понять что программа зависла, если у вас слабый компьютер дайте ему минут 15 – 20. Дальше ждать как правило бесполезно.

5) Нервничать – пиная ногой системный блок или стуча клавиатурой по столу делу не поможешь. Я специально написал этот пункт, так как по непонятным причинам люди так иногда поступают (наверно сказывается наше прошлое, когда ламповый телевизор не хотел работать, его обычно стукали рукой и это помогало). Компьютер – это не ламповый телевизор, не надо его бить.

Что нужно сделать

Нужно пытаться закрыть программу, если нажатие на крестик в правом верхнем углу и комбинация alt + f4 не помогают, то надо сделать следующее:

Нажимаем комбинацию клавиш для вызова диспетчера задач:

Для Windows xp “Ctrl + Alt + Del”.

Для Windows 7 “Ctrl + Shift + Esc”.

В диспетчере задач переходим во вкладку “Приложения”, если в разделе задача отображается ваша программа, то выделяйте ее и жмите на кнопку “Снять задачу”. Если реакции сразу не последовало, не нужно повторно жать на эту кнопку, нужно просто подождать немного. Через некоторое время появится окошко с предупреждением что данные могут быть потеряны, вам надо будет нажать на кнопку “Завершить сейчас”. Для примера смотрите скриншот (я завершал рабочую программу, так что текст у вас будет другой, но принцип один и тот же).

Если таким способом не удается завершить программу, тогда нажмите правой кнопкой мыши на зависшей программе и из ниспадающего меню выберите пункт “Перейти к процессу”. Вы автоматически попадете во вкладку “Процессы”, нужный процесс уже будет выделен, вам только надо будет нажать на кнопку “Завершить процесс”.

Если зависшая программа не отображается во вкладке «Приложения», тогда вам надо перейти во вкладку “Процессы” найти процесс зависшей программы и завершить его. Искать процесс легче всего по имени, также можно искать по степени загруженности процессора, обычно у зависшего приложения процент этот большой.


Это статья на поможет избавиться от зависания программ. В ней я опишу способ, который поможет завершить зависшую программу правильно. Ведь часто для того, чтобы завершить прогу, люди применяют известные им способы - это лихорадочное нажатия клавиш alt + f4 или просто кнопку esc и, в большинстве случаев, это не дает результата. Тогда приходится нажимать единственную кнопку, которая поможет обязательно - это кнопка на системном блоке или ноутбуке для выключения или перезагрузки. В этом случае Вы рискуете потерять данные не только зависшей программы, но и других, которые открыты.

Причин, почему зависает программа, может быть несколько:

  • Если у Вас 64х разрядная система (), а Вы запускаете программу предназначенную для 32х битных систем, то в лучшем случае программа просто не запуститься, в худшем она зависнет. Хотя тут есть и нюанс - бывает что такие проги работают, но либо некорректно, либо со временем зависнут.
  • У Вас слишком мало оперативной памяти для запуска.
  • У Вас запущенно слишком много программ и процессов, которые и без того грузят систему.
  • У Вас в фоне работают программы, которые занимают много системных ресурсов
  • Вирусы
  • Технические проблемы (высохла термопаста на процессоре, забилось много пыли, "слабое" железо и т.п.)

    И вот Вы запустили программу и ждете запуска. А она остановилась на процессе загрузки и "молчит". Хорошо если играет фоновая музыка (принципиально для игр), она Вам может дать подсказку в виде зацикливания. Можно, конечно, подождать несколько минут (не более 5) в ожидании "чуда" и что программа отвиснет, но если Вам не хочется ждать и Вы точно знаете что программа зависла, то нужно приступить к закрытию зависших программ .

    Для того, чтобы завершить программу, которая не отвечает (а именно так ещё называют зависание) нужно вызвать Диспетчер задач. Можно, конечно, воспользоватся ctrl +shift +esc , но я рекомендую использовать сочетание клавиш более известное и действенное ctrl +alt +del .

    В Windows 7 при нажатии этих клавиш откроется окно из пяти пунктов, в котором нужно выбрать последний.


    Во вкладке Приложения ищем зависшую программу (обычно у неё состояние Не отвечает ), щелкаем на ней ПКМ и в меню выбираем Перейти к процессу :


    Откроется вкладка Процессы с выделенным зависшем процессом. Здесь просто нажимаем на Завершить процесс


    и соглашаемся с предупреждением системы

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

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

    Бывает такое, что программа проводник не отвечает . Под этим я подразумеваю то, что, например, открыли Вы папку на компьютере или даже просто Мой компьютер и система зависла (начинает долго думать). У меня самого такое бывало.
    В этом случае может помощь так же Диспетчер задач и способ описанный выше.

    Но тут важно помнить одну деталь: процесс проводника называется explorer.exe и при его завершении у Вас закроются все папки компьютера. Но это ещё пол беды. После того, как Вы "убили" проводник, исчезнет так же панель управления с меню Пуск. Поэтому не закрывайте сразу Диспетчер задач! Для того, чтобы вернуть то, что пропало (за исключением открытых папок), нажмите в нем Файл -> Выполнить


    и введите в строку explorer.exe


    разумеется нажимаем ОК и всё вернется на свои места.

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

  • В последнее время пользователи и администраторы все чаще начинают жаловаться, что новые конфигурации 1С, разработанные на основе управляемого приложения, работают медленно, в некоторых случаях неприемлемо медленно. Понятно, что новые конфигурации содержат новые функции и возможности, а поэтому более требовательны к ресурсам, но понимания, что в первую очередь влияет на работу 1С в файловом режиме у большинства пользователей нет. Постараемся исправить этот пробел.

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

    Небольшое исследование русскоязычных ресурсов по 1С показало, что данный вопрос старательно обходится стороной, в случае возникновения проблем обычно советуется переход к клиент-серверному или терминальному режиму. А также практически общепринятым стало мнение, что конфигурации на управляемом приложении работают значительно медленнее обычных. Как правило аргументы приводятся "железные": "вот Бухгалтерия 2.0 просто летала, а "тройка" еле шевелится, безусловно, доля истины в этих словах есть, поэтому попробуем разобраться.

    Потребление ресурсов, первый взгляд

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

    Для тестирования мы взяли две виртуальные машины под управлением Windows Server 2012 R2 и Windows 8.1 соответственно, выделив им по 2 ядра хостового Core i5-4670 и 2 ГБ оперативной памяти, что соответствует примерно средней офисной машине. Сервер разместили на RAID 0 массиве из двух , а клиент на аналогичном массиве из дисков общего назначения.

    В качестве подопытных баз мы выбрали несколько конфигураций Бухгалтерии 2.0, релиза 2.0.64.12 , которую затем обновили до 3.0.38.52 , все конфигурации запускались на платформе 8.3.5.1443 .

    Первое, что обращает на себя внимание, это выросший размер информационной базы "тройки", причем существенно выросший, а также гораздо большие аппетиты к оперативной памяти:

    Мы уже готовы услышать привычное: "да чего они там такого добавили в эту тройку", но давайте не будем спешить. В отличие от пользователей клиент-серверных версий, которые требуют наличия более-менее квалифицированного администратора, пользователи файловых версий крайне редко задумываются об обслуживании баз. Также редко об этом думают обслуживающие (читай - обновляющие) эти базы сотрудники специализированных фирм.

    Между тем информационная база 1С - это полноценная СУБД своего формата, которая тоже требует обслуживания и для этого даже есть инструмент, который называется Тестирование и исправление информационной базы . Возможно злую шутку сыграло название, которое как-бы подразумевает, что это инструмент для устранения проблем, но низкая производительность - тоже проблема, а реструктуризация и реиндексация, вместе со сжатием таблиц - хорошо известные любому администратору СУБД средства оптимизации баз данных. Проверим?

    После применения выбранных действий база резко "похудела", став даже меньше "двойки", которую тоже никто никогда не оптимизировал, также немного уменьшилось потребление ОЗУ.

    В последствии, после загрузки новых классификаторов и справочников, создания индексов и т.п. размер базы вырастет, в целом базы "тройки" больше баз "двойки". Однако более важно не это, если вторая версия довольствовалась 150-200 МБ оперативной памяти, то новой редакции нужно уже полгигабайта и из этого значения следует исходить, планируя необходимые ресурсы для работы с программой.

    Сеть

    Пропускная способность сети - один наиболее важных параметров для сетевых приложений, особенно, как 1С в файловом режиме, перемещающих по сети значительные объемы данных. Большинство сетей небольших предприятий построены на базе недорогого 100 Мбит/с оборудования, поэтому мы начали тестирование именно со сравнения показателей производительности 1С в сетях 100 Мбит/с и 1 Гбит/с.

    Что происходит при запуске файловой базы 1С по сети? Клиент скачивает во временные папки достаточно большое количество информации, особенно если это первый, "холодный", запуск. На 100 Мбит/с мы ожидаемо упремся в ширину канала и загрузка может занять значительное время, в нашем случае около 40 секунд (цена деления графика - 4 сек).

    Второй запуск происходит быстрее, так как часть данных сохраняется в кэше и находится там до перезагрузки. Переход на гигабитную сеть способен значительно ускорить загрузку программы, как "холодный", так и "горячий", причем соотношение значений при этом соблюдается. Поэтому мы решили выразить результат в относительных значениях, взяв за 100% самое большое значение каждого замера:

    Как можно заметить из графиков, Бухгалтерия 2.0 загружается при любой скорости сети вдвое быстрее, переход со 100 Мбит/с на 1 Гбит/с позволяет ускорить время загрузки в четыре раза. Разницы между оптимизированной и неоптимизированной базами "тройки" в данном режиме не наблюдается.

    Также мы проверили влияние скорости сети на работу в тяжелых режимах, например, при групповом перепроведении. Результат также выражен в относительных значениях:

    Здесь уже интереснее, оптимизированная база "тройки" в 100 Мбит/с сети работает с такой же скоростью, как и "двойка", а неоптимизированная показывает вдвое худший результат. На гигабите соотношения сохраняются, неоптимизированная "тройка" также вдвое медленнее "двойки", а оптимизированная отстает на треть. Также переход на 1 Гбит/с позволяет сократить время проведения в три раза для редакции 2.0 и в два раза для 3.0.

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

    Собственно, для повседневных задач пропускная способность сети не является узким местом, неоптимизированная "тройка" всего лишь на 20% медленнее двойки, а после оптимизации оказывается примерно настолько же быстрее - сказываются преимущества работы в режиме тонкого клиента. Переход на 1 Гбит/с не дает оптимизированной базе никаких преимуществ, а неоптимизированная и двойка начинают работать быстрее, показывая небольшую разницу между собой.

    Из проведенных тестов становится очевидно, что сеть не является узким местом для новых конфигураций, а управляемое приложение работает даже быстрее обычного. Также можно рекомендовать переход на 1 Гбит/с если для вас критичны тяжелые задачи и скорость загрузки баз, в остальных случаях новые конфигурации позволяют эффективно работать даже в медленных 100 Мбит/с сетях.

    Так почему же 1С тормозит? Будем разбираться дальше.

    Дисковая подсистема сервера и SSD

    В прошлом материале мы добились увеличения производительности 1С разместив базы на SSD. Возможно недостаточно производительности дисковой подсистемы сервера? Мы сделали замеры производительности дисковой сервера во время группового проведения сразу в двух базах и получили довольно оптимистичный результат.

    Несмотря на относительно большое количество операций ввода-вывода в секунду (IOPS) - 913, длина очереди не превысила 1,84, что для двухдискового массива очень хороший результат. Исходя из него можно сделать предположение, что зеркала из обычных дисков будет достаточно для нормальной работы 8-10 сетевых клиентов в тяжелых режимах.

    Так нужен ли SSD на сервере? Лучше всего ответить на этот вопрос поможет тестирование, которое мы провели по аналогичной методике, сетевое подключение везде 1 Гбит/с, результат также выражен в относительных значениях.

    Начнем со скорости загрузки базы.

    Может быть кому-то и покажется удивительным, но на скорость загрузки базы SSD на сервере не влияет. Основной сдерживающий фактор здесь, как показал предыдущий тест, пропускная способность сети и производительность клиента.

    Перейдем к перепроведению:

    Выше мы уже отмечали, что производительности дисковой вполне достаточно даже для работы в тяжелых режимах, поэтому на скорость проведения SSD также не оказывает влияния, кроме неоптимизированной базы, которая на SSD догнала оптимизированную. Собственно, это еще раз подтверждает, что операции оптимизации упорядочивают информацию в базе данных, уменьшая количество случайных операций ввода вывода и повышая скорость доступа к ней.

    На повседневных задачах картина аналогичная:

    Выигрыш от SSD получает только неоптимизированная база. Вы, конечно, можете приобрести SSD, но гораздо лучше будет задуматься о своевременном обслуживании баз. Также не забывайте о дефрагментации раздела с информационными базами на сервере.

    Дисковая подсистема клиента и SSD

    Влияние SSD на скорость работы локально установленной 1С мы разбирали в , многое из сказанного справедливо и для работы в сетевом режиме. Действительно, 1С достаточно активно использует дисковые ресурсы, в том числе и для фоновых и регламентных задач. На рисунке ниже можно видеть, как Бухгалтерия 3.0 довольно активно обращается к диску в течении порядка 40 секунд после загрузки.

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

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

    Оперативная память

    Несмотря на то, что оперативка сейчас неприлично дешева, многие рабочие станции продолжают работать с тем объемом памяти, который был установлен при покупке. Вот тут и подстерегают первые проблемы. Уже исходя из того, что в среднем "тройке" требуется около 500 МБ памяти можно предположить, что общего объема оперативной памяти в 1ГБ для работы с программой будет недостаточно.

    Мы уменьшили память системы до 1 Гб и запустили две информационные базы.

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

    К чему это приведет? Посмотрим, как используются ресурсы системы в тяжелых операциях, например, запустим групповое перепроведение сразу в двух базах. Сначала на системе с 2 ГБ оперативной памяти:

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

    Теперь уменьшим память до 1 ГБ:

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

    При этом даже субъективная работа с двумя открытыми базами на системе с 1 ГБ памяти оказалась крайне некомфортной, справочники и журналы открывались со значительной задержкой и активным обращением к диску. Например, открытие журнала Реализация товаров и услуг заняло около 20 секунд и сопровождалось все это время высокой дисковой активностью (выделено красной линией).

    Чтобы объективно оценить влияние оперативной памяти на производительность конфигураций на основе управляемого приложения мы провели три замера: скорость загрузки первой базы, скорость загрузки второй базы и групповое перепроведение в одной из баз. Обе базы полностью идентичны и созданы копированием оптимизированной базы. Результат выражен в относительных единицах.

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

    Недостаток оперативной памяти - основная причина по которой работа с новыми конфигурациями 1С оказывается некомфортной. Минимально подходящими следует считать конфигурации с 2 ГБ памяти на борту. При этом учитывайте, что в нашем случае были созданы "тепличные" условия: чистая система, запущены только 1С и диспетчер задач. В реальной жизни на рабочем компьютере как правило открыты браузер, офисный пакет, работает антивирус и т.д, и т.п., поэтому исходите из потребности 500 МБ на одну базу плюс некоторый запас, чтобы при тяжелых операциях вы не столкнулись с недостатком памяти и резким снижением производительности.

    Процессор

    Центральный процессор без преувеличения можно назвать сердцем компьютера, так как именно он, в конечном итоге, осуществляет обработку всех вычислений. Чтобы оценить его роль мы провели еще один набор тестов, такой же, как и для оперативной памяти, уменьшив количество доступных виртуальной машине ядер с двух до одного, при этом тест выполнялся два раза с объемами памяти в 1 ГБ и 2 ГБ.

    Результат оказался довольно интересным и неожиданным, более мощный процессор довольно эффективно брал на себя нагрузку в условиях недостатка в ресурсах, в остальное время не давая каких-либо ощутимых преимуществ. 1С Предприятие (в файловом режиме) сложно назвать приложением, активно использующим процессорные ресурсы, скорее нетребовательным. А в тяжелых условиях на процессор ложится нагрузка не столько по обсчету данных самого приложения, сколько обслуживания накладных расходов: дополнительных операций ввода вывода и т.п.

    Выводы

    Итак, почему тормозит 1С? В первую очередь это недостаток оперативной памяти, основная нагрузка в этом случае ложится на жесткий диск и процессор. А если они не блистают производительностью, как это обычно бывает в офисных конфигурациях, то получаем ситуацию, описанную в начале статьи - "двойка" работала нормально, а "тройка" безбожно тормозит.

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

    Затем следует обратить внимание на дисковую, покупка SSD вряд ли будет хорошим вложением денег, а вот заменить диск на более современный будет не лишним. Разницу между поколениями жестких дисков можно оценить по следующему материалу: .

    И наконец процессор. Более быстрая модель конечно же не будет лишней, но большого смысла увеличивать его производительность нет, если только данный ПК не используется для тяжелых операций: групповых обработок, тяжелых отчетов, закрытия месяца и т.п.

    Надеемся данный материал поможет вам быстрее разобраться в вопросе "почему тормозит 1С" и решить его наиболее эффективно и без лишних затрат.

    • Теги:

    Please enable JavaScript to view the

    Влияние блокировок на производительность 1С:Предприятие 8

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

    Ниже мы расскажем наш опыт по решению данных проблем.

    Обнаружение проблем блокировок в 1С

    Вопросы производительности в многопользовательском режиме вовсе не обязательно связаны с плохим кодом или плохим железом. Для начала нам надо ответить на вопрос — какие проблемы производительности существуют и что их вызывает?

    Отследить вручную деятельность сотен пользователей вручную нельзя, нужен инструмент автоматизирующий сбор такой информации.

    Существует много инструментов, но практически у всех них есть один очень существенный недостаток — цена.

    Но есть выход — мы в качестве инструмента анализа выбираем

    Мы будем исследовать проблему на MS SQL Server, поэтому нам потребуются следующие сервисы из этого набора:

    1. Мониторинг и анализ долгих запросов (подробнее о настройке читайте здесь ) — нужен для того чтобы оценить о наличии долгих операций к субд.

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

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

    3. Анализ взаимных блокировок в 1С и MS SQL server (подробнее о настройке читайте здесь ) — позволит нам оценить более сложные ситуации с ожиданием ресурсов, когда несколько участников часть ресурсов уже успели «захватить» блокировкой и теперь вынуждены ждать вынуждены ждать друг друга из-за того, что они не могут освободить занятые ресурсы до завершения захвата других ресурсов, заблокированных соседями.

    Вообщем в такой непростой ситуации вручную не разобраться, нужен такой сервис.

    4. Контроль загруженности оборудования (подробнее о настройке читайте здесь ) помогает нам ответить на вопросы — сколько пользователей в системе, есть ли у них блокировки, как много блокировок, справляется ли железо с нагрузкой?

    Сервисы настраиваются очень легко, но даже если у вас все равно остались вопросы, есть !

    С помощью выше перечисленных инструментов мы обладаем объективной информации о производительности системы. Это позволяет нам правильно оценить ситуацию и предложить адекватные меры.

    Фактически мы получаем информацию обо всех проблемах производительности и можем точно ответить на вопросы вроде «сколько проблем в системе», «где конкретно они возникают», «каждая из проблем с какой точно частотой возникает», «какие проблемы значимы, а какие второстепенны». Т.е. мы видим все предпосылки, которые сформировали причину возникновения проблемы.

    Сервисы позволяют существенно улучшить понимание условий возникновения проблем, не заставляя вручную копаться в таких вещах как структура хранения данных информационной базе на уровне СУБД, механизме наложения блокировок, и т.д.

    В результате мы получим картину производительности которая измеряется

    — время запроса (разумеется, отранжировав проблемные запросы по весу (время запроса на количество вызовов этого запроса);

    — время ожидания блокировок;

    Итак, мы запустили сервис Анализ ожиданий на блокировках

    В верхней таблице сервис показывает список «жертв» блокировок с учетом суммарного веса «тяжести ожиданий».

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

    В нижней таблице откройте детализацию по факту одного из событий «таймаута». Как например на картинке.

    Подсветив строку с «виновником», мы увидим что узким местом стала таблица _Reference64, причем возникла проблема на кластерном индексе с областью «неизвестно». Возможно в будущем мы переименуем в «таблица», так как на самом деле такое поведение характерно для повышения/укрупнения области блокирования.

    Строка с «жертвой» показывает какой код оказался заложником ситуации и не смог заблокировать все навсего строку «по ключу» (минимальная область блокирования данных в этой таблице).

    Решать эту проблему можно «правильно» и «по легкому».

    По правильному пути идти сложнее — фактически надо переписывать код, минимизируя вероятность возникновения подобных ситуаций.

    Один из факторов как ни странно звучит — это уменьшение длительности .

    Уменьшить длительность транзакции можно:

    1. переписав алгоритм

    2. переписав запрос (более быстрый запрос уменьшает вероятность блокировок в сложных транзакциях на таблицах, которых иногда даже может не быть в запросе!)

    2.1 добавив отсутствующий покрывающий индекс (иногда индекс не только ускоряет запрос, но и уменьшает область чтения данных, что уменьшает вероятность блокирования)

    3. уменьшив объем данных, обрабатываемый в тразакции (помимо линейной скорости помним еще про эскалацию блокировок)

    4. увеличив производительность оборудования в рамках каждого потока

    Время исполнения запроса

    1) разные пользователи могут работать параллельно с разными данными
    2) разные пользователи должны работать строго последовательно с одними и теми же данными

    Однако оптимизировать использование блокировок можно, тем самым уменьшив общее время ожидания.

    Как работают блокировки (этот пункт можно не читать)

    Работой с блокировками занимается специальный модуль SQL Server’а – менеджер блокировок (Lock Manager). В его задачи входит:

    • создание и установка блокировок;
    • снятие блокировок;
    • эскалация блокировок;
    • определение совместимости блокировок;
    • устранение взаимоблокировок (deadlocks) и многое другое.

    Когда пользователь делает запрос на обновление или чтение данных, менеджер транзакций СУБД передает управление менеджеру блокировок СУБД для того, чтобы выяснить были ли блокированы запрашиваемые ресурсы, и, если да, совместима ли запрашиваемая блокировка с текущей. Если блокировки несовместимы, выполнение текущей транзакции откладывается до тех пор, пока данные не будут разблокированы. Как только данные становятся доступны, менеджер блокировок накладывает запрашиваемую блокировку, и возвращает управление менеджеру транзакций.

    Основная причина, снижающая быстродействие – блокировки

    Ожидания на блокировках являются основной проблемой быстродействия многопользовательского режима. И это понятно, ведь они увеличивают время ожидания операций, а значит и время отклика. Можно ли сказать, что ожидание на блокировках – это не правильно и ошибка многопользовательской системы? Так сказать нельзя, поскольку сам по себе механизм блокирования ресурсов обеспечивает целостность данных. С помощью механизма блокировок конкурентные данные ЗАПИСЫВАЮТСЯ ПОСЛЕДОВАТЕЛЬНО.

    Разница между необходимыми и избыточными блокировками

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

    Опыт подсказывает нехитрое правило, если больше половины времени исполнения запроса он фактически ожидает заблокированный ресурс, то надо посмотреть: может быть можно часть блокировок получиться оптимизировать, уменьшить время блокирования ресурса.

    Тут как бы невзначай ввожу определение:

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

    А транзакция — это множество вычислений и операций с данными (наиболее яркий пример — при проведении документа) , выполняемых как единое целое. Невыполнений любой из операции транзакции приводит к отмене транзакции целиком.

    Итак,пользователи в многопользовательских информационных базах могут часто жаловаться, что невозможно работать из-за этих блокировок, при этом в коде действительно могут быть блокировки, которые в этом месте не нужны (избыточные).
    А еще и в коде конфигурации они сами по себе блокировки могут не присутствавать, про них можно прочитать например здесь http://kb.1c.ru/articleView.jsp?id=30 (статья является фрагментом книги П.С.Белоусов, А.В.Островерх «1С:Предприятие: от 8.0 к 8.1».). Предлагаю упрощенный способ объяснения различия блокировок на простом примере так:

    В вашей конфигурации в режиме 1С:Предприятие создайте две одинаковых накладных с одинаковым составом товара. Но обязательно укажите различные склады поступления.
    В коде обработки проведения надо добавить строчку с выводом на экран сообщения (или другой код, способный задержать исполнение обработки проведения на 21 секунду (таймаут блокировки происходит через 20 секунд, если параметры по умолчанию)).
    Проводите два документа.
    Если возникает таймаут, а по логике товары приходят на разные склады, в приложении присутствуют избыточные блокировки. Бизнес – логике (считай по здравому смыслу) здесь блокировок не должно быть.
    Если же мы теперь сделаем в этих двух накладных одинаковые склады. То созданные блокировки в результате попытки одновременного проведения приведут НЕОБХОДИМОЙ блокировке и это ХОРОШО!

    Т.е. пока накладная вносит изменения в остатки на складе, другая должна подождать.

    Конечно даже этот простой пример оставляет много вопросов. Например, а если документы от одного поставщика и «двигается» задолженность по нему. А если двигаются не одни остатки на складе, а несколько регистров, а документы разного вида.
    Но самый главный вопрос – А ПО КАКОЙ ТАКОЙ БИЗНЕС-ЛОГИКЕ НЕ ДОЛЖНО БЫТЬ БЛОКИРОВОК. Кто эту бизнес – логику и где прописывает в контексте блокировок? Но довайте обо всем по порядку.

    Избыточные блокировки – лишние – которые не нужны с точки зрения обеспечения целостности данных и при этом снижающие общую производительность системы, увеличивая общее время «простоя» — ожидания на блокировках.
    Необходимая блокировка возникает при захвате двумя пользователями одних и тех же ресурсов (объектов данных). Если же пользователи работают с непересекающимися ресурсами, но при этом происходит ожидание на блокировке, то блокировка считается избыточной.

    Наиболее понятными критериями избыточности блокировок обозначу:

    1. Взаимные блокировки;

    2. Уровень (область) блокировки выше необходимой (как частный случай повышения уровня блокировки, т.н. эскалация);

    3. Время блокировки больше времени «реального» использования объекта блокировки.

    Получив информацию о группировках проблем в разрезе метаданных 1С:Предприятие, рекомендую обратить внимание прежде всего на объектах:

    • Константы
    • Последовательность
    • Регистры бухгалтерии
    • Регистры накоплени
    • Регистры сведений
    • Регистры расчета

    1) До не давнего времени была общеизвестная рекомендация в константы ничего не писать. В крайнем случаи делать это из под одного пользователя, и то помнит, что пока пользователь «пишет» одну константу, не только эту, но и любую другую константу другие пользователи будут «ждать». Поэтому особо опасно использовать констатны в обработке проведения. Значения всех констант хранятся в одном ресурсе .

    На рисунке показано физическое размещение констант конфигурации УПП в таблице базы данных MS SQL Server 2005.

    Это означает, что при блокировке одной константы будут заблокированы все константы. СУБД накладывает блокировку на ВСЮ единственную СТРОКУ таблицы, т.е. на все константы.

    Однако в последних релизах платформы хранение констант изменено. Теперь каждая константа — это отдельная таблица. Правда сильно не увлекайтесь, если вы создадите тысячи таблиц, то можете словить блокировку на базе master.

    Внимание, если у вас конфигурация существует давно, то изменить формат хранения можно путем «реструкторизации» в Тестировании и Исправлении конфигуратора.

    2) Отказаться от использования объекта метаданных «Последовательность». Хотя бы от движений при оперативном проведении, проводить при неоперативном (допроведении). Смотрите, как реализовано в последних версиях УПП.

    3) Если в системе осуществляется оперативная запись движений по бухгалтерскому регистру в многопользовательском режиме, то рекомендуется:

    • включить для данного регистра режим разделения итогов;
    • не использовать контроль остатков регистра при оперативной работе.

    4) В регистре накопления в случаи отсутствия необходимости получить «оперативные» данные можно включить разделение итогов, что повысит параллельность записи данных и ускорит работу в целом. Внимательно следить за измерениями, чтобы «остатки» можно было получить максимальной детализацией по измерениям.

    5) Избавиться от некоторых избыточных блокировок, создаваемых платформой можно только путем . В автоматическом режиме работы конфигураций платформа «берет на себя» блокирование ресурсов. Цена беззаботного использования автоматического режима — возможны блокировки на границах диапазонов индексов, блокировки пустой таблицы, эскалация блокировок.

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

    Уже несколько раза произнес «управляемые блокировки», «управляемый режим». Надо понимать, что существует два вида блокировок:
    Блокировки СУБД – устанавливаются автоматически на уровне СУБД при выполнении запросов.
    Блокировки 1С:Предприятие – устанавливаются автоматически при записи (модификации) данных и всегда вручную при чтении данных.

    Дотошный читатель скажет, что 1С делит еще на объектные и не объектные блокировки, но сейчас этот подход мы трогать не будем.

    Зато отмечу, что накладывает больше требований квалификации и опыту 1С-специалиста.

    6) Отсутствующие индексы (особенно в сложных запросах) это вообще основной фактор возникновения более выского уровня блокировок, чем необходимо. Т.е. парадокс, я с одной стороны говорил, что до оптимизации запроса говорил что сначала надо посмотреть на блокировки, а теперь говорю, чтобы оптимизировать блокировки — надо оптимизировать запрос. У меня есть оправдание, перевод конфигурации на управляемые блокировки уменьшает избыточные блокировки даже не в оптималном запросе. Это происходит по причине уменьшения уровня изоляции транзакций, что в свою очередь менеджеру блокировок СУБД дает меньше поводов наложить избыточную блокировку.

    Основные причины избыточных блокировок (подитожим выше сказанное)

    — ошибки проектирования
    (степень параллельности определяется тем «насколько мелко нарезаны данные»: возможна параллельная работа с двумя строками таблицы, работа с одной строкой будет идти только последовательно)
    (ошибки использования метаданных: запись констант, последовательностей, оперативный учет на регистрах бухгалтерии)
    — избыточная блокировка по вине автоматическго режима (связка платформа — СУБД).
    — неоптимальная работа запроса
    (например при сканировании таблицы блокируется вся таблица – избыточная область
    и увеличивается время блокировки – избыточное время, дополнительное количество блокировок увеличивает вероятность эскалации блокировки)

    Как Вы видите задача оптимизации блокировок «многогранная». Нужно как можно лучше представлять «контекст», что спровоцировал проблему. На каких ресурсах, какой код. Насколько реально эта блокировка необходима, или она избыточна.

    У ребенка и взрослого болит горло. Когда доктор задаст вопрос: «Что не так?», ребенок будет смотреть на доктора и кричать (верьте мне, я знаю), тогда как взрослый укажет на симптомы болезни. Эти явное различие направляет доктора к разным методам идентификации проблемы.
    С ребенком, доктор должен выполнить много тестов, собрать данные, объединить их, выполнить анализ и только затем дать рекомендации. Тогда как с взрослым, он задаст несколько вопросов и, поскольку число исходных данных невелико, время анализа и определения проблемы будет существенно меньше. Как результат, рекомендации будут выданы намного раньше.

    Пользуйтесь нашими сервисами и у Вас появиться больше возможностей бесплатно проанализировать проблему и найти решение!

    Loading...Loading...