Зависание 1с. Как закрыть зависшую программу. Дисковая подсистема сервера и SSD

В данной статье рассматриваются основные факторы: когда 1С тормозит, 1С зависает и медленно работает 1С. Данные подготовлены на основании многолетнего опыта компании SoftPoint по оптимизации крупных IT систем, построенных на связке 1С + MS SQL.

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

Из практики: Легче всего оптимизировать 1С v7.7 (Оптимизация 1С 8.1, 1С 8.2, 1С 8.3 более сложная задача, так как приложение состоит из 3 звеньев). Довести её до 400 одновременных пользователей – достаточно типовой проект. До 1500 – уже сложный, требующий упорной работы.

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

Основное ограничение при многопользовательской работе в 1С – блокировочный механизм. Именно блокировки в 1С, а не оборудование сервера обычно не дают работать в базе большому количеству людей. Чтобы побороть эту беду – приходится хорошенько потрудиться и менять логику блокировок в 1С - опустить их с табличных до построчных. Тогда, например, проведение документа будет блокировать только один, а не все документы в системе.

Рисунок 1. Очередь блокировок 1С в системе мониторинга PerfExpert, с информацией о пользователях 1С, модуле конфигурации и конкретной строке кода в этом модуле.

Изменение механизма блокировок 1С - очень сложная технология. Не всем под силу провернуть подобный фокус и для них остаётся только один путь – оптимизация структуры и ускорение времени выполнения операций. Дело в том, что блокировки в 1С и время выполнения операций – сильно взаимосвязанные показатели. Например, если операция проведения документа занимает 15 секунд, то при большом количестве пользователей велика вероятность, что во время проведения ещё кто-то попробует провести документ, и будет ожидать в блокировке. Если довести время проведения, хотя-бы до 1 секунды, то блокировки 1С по этой операции значительно снизятся.

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

Тяжёлые отчёты, выполняющие только операции чтения, также могут быть опасны с точки зрения блокировок, хотя, казалось бы, не блокируют данные. На интенсивность блокировок в 1С такие отчёты влияют, замедляя остальные операции в системе. То есть, если отчёт очень тяжёлый и забирает основную часть ресурсов сервера, может получиться, что до запуска отчёта те же проведения выполнялись 1 секунду, а во время выполнения отчёта – выполняются 15 секунд. Естественно, с увеличением времени выполнения операций будет увеличиваться и интенсивность блокировок.

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

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

Замедлять время выполнения операций и, следовательно, увеличивать интенсивность блокировок 1С помимо запуска тяжёлых отчётов может неоптимальная настройка MS SQL и MS Windows. Эта проблема обнаруживается у 95% клиентов. Нужно отметить, что это сервера серьёзных организаций, их поддержкой и настройкой занимаются целые отделы высоко квалифицированных администраторов.

Основной причиной не правильной настройки сервера является страх администраторов что-либо менять на работающем сервере и правило «Лучшее – враг хорошего». Если администратор поменяет настройки сервера и начнутся проблемы, то весь гнев начальства выльется на нерадивого админа. Поэтому ему выгоднее оставить всё как есть, и не делать ни шагу без распоряжения начальства, чем экспериментировать под свою ответственность.

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

На первый взгляд картина ясна – нужно оптимизировать всё, что тормозит работу сервера 1С. Но давайте представим себя на месте такого оптимизатора – допустим у нас 1С 8.1 8.2 8.3 УПП и одновременно работают 50 пользователей. В один ужасный день пользователи начинают жаловаться, что 1С тормозит, и нам нужно решить эту проблему.

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

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

Следующий шаг – проверяем, какие программы нагружают MS SQL. Осмотр показывает, что нагрузка создаётся из примерно 20 соединений сервера приложений.

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

Дальнейший анализ ситуации сталкивается с большими трудностями. Мы уже выяснили, что нагрузка идёт непосредственно из 1С, но как понять, что именно делают пользователи? Или хотя-бы, кто они. Хорошо, если пользователей 1С в организации 10, тогда можно просто пройтись по ним и узнать, чем они сейчас занимаются, но в нашем случае их полсотни, и раскиданы они по нескольким зданиям.

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

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

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

Возвращаясь к нашему примеру – наиболее вероятный исход: Администратор говорит «Виноваты программисты, которые писали конфигурацию», Программисты в ответ – «У нас всё написано хорошо – это сервер плохо работает». А воз, как говорится, и ныне там. В итоге 1С тормозит, зависает или работает медленно.

В любом случае для решения проблем производительности 1С мы рекомендуем для начала приобрести и использовать мониторинг производительности PerfExpert , это позволит Вам принять правильное управленческое решение и сэкономить деньги. Продукт подходит как для небольших ИС 1С:Предприятие – до 50 пользователей, так и для систем – от 1000 пользователей. С июля 2015 года мониторинг производительности PerfExpert получил сертификат 1С:Совместимо, прошел тестирование в Microsoft и помогает решать проблемы производительности не только для систем 1С, но и для других информационных систем на базе MS SQL Server (Axapta , CRM Dynamics , Doc Vision и прочие).

Если Вам понравилась информация, рекомендуемые дальнейшие действия:

- Если Вы хотите самостоятельно разбираться с техническими проблемами производительности 1С (1С 7.7, 1С 8.1, 1С 8.2, 1С 8.3) и других информационных систем , то для Вас уникальный список технических статей в нашем Альманахе (Блокировки и взаимоблокировки, большая нагрузка на CPU и диски, обслуживание баз данных и индексный тюнинг - лишь малая часть технических материалов, которые Вы там найдете).
.
- Если Вы хотите обсудить с нашим экспертом проблемы производительности или заказать решение мониторинг производительности PerfExpert , то оставьте заявку и мы свяжемся с Вами в кратчайшие сроки.

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”.

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

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

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

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

Открытая программа перестала отвечать на ваши действия, курсор завис или превратился в песочные часы, окно самой программы выдает надпись «Не отвечает», вы жмете на все подряд, нервничаете и не знаете что делать?

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

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

Что нельзя делать если программа зависла

Давайте разберем наиболее частые ошибки, которые совершают многие начинающие пользователи, тем самым теряя свое время.

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

Что делать если зависла программа

1. Перед тем как перейти к более радикальным методам, попробуйте закрыть ее в панели задач, нажав правой клавишей мыши по зависшей программе и выбрав соответствующий пункт.
2. Если не помогает, переходим к проверенному методу, для этого нам понадобится запустить диспетчер задач. Вызвать диспетчер задач можно комбинацией клавиш Ctrl + Shift + Esc (Windows 7) Ctrl + Alt + Del (Windows XP).

Нас интересует вкладка «приложения» здесь отображаются все приложения запущенные на компьютере в данный момент. Ищем приложение которое зависло (в моем примере это программа ) и нажимаем → Снять задачу . Как правило, этого бывает достаточно!! Не помогло → пункт 3.
3. Что делать если программа продолжает виснуть? Переходим на следующую вкладку → «Процессы». Дело в том, что с любой программой которую вы запускаете на компьютере, связан некоторый процесс или процессы. И та программа, которая на данный момент зависла, так же имеет свой процесс, узнать который вы можете щелкнув правой клавишей по ярлыку программы и выбрать → «Свойства». На моем примере это процесс → VideoConverter.exe

Выбрав вкладку процессы → ищем свой процесс (в моем случае это «VideoConverter.exe») и нажимаем → «завершить процесс» или, чтоб наверняка → правой клавишей по процессу → «Завершить дерево процессов»

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