gifts2017

Зависшие соединения в кластере 1С

Опубликовал Вячеслав Салин (juker) в раздел Администрирование - Системное

Не адекватное поведение рабочего процесса в кластере 1С

Конфигурация: клиент-сервер

Server SQL 2008 r2

MS Server 2012

Версия 1С 8.3.4.389

Столкнулся с проблемой:

Бухгалтерия 3.0

Все началось с того, что бухгалтер запускает оборотку и никак не может дождаться её формирования. Отображается процесс формирования отчета... и все. Результат нет ни через пять минут, ни через час.

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

Дальнейшие события переносятся на сервер...

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

Не буду вещать обо всех своих мытарствах, если будет интересно, напишу.

РЕШЕНИЕ:

  1. Запускаем диспетчер задач
  2. Находим процессы с именами rmngr и rphost. В моем случае у меня был один процесс менеджера (как и должно быть) и ЧЕТЫРЕ рабочих процесса.
  3. Один из процессов не подавал признаков жизни вообще, т.е. не использовал времени процессоров и не менял объем используемой памяти. Контролируется это визуально и на приличном интервале времени... минут 10 - 15 хватит, чтобы увидеть зависший процесс.
  4. Как только убедились в неработоспособности процесса ПКМ на нем и килл.

Как только я это сделал (вальнул процесс), сразу сервер пересоздал его (процесс) и остальные процессы заработали пошустрее. В консоли управления ВСЕ фантомы исчезли. Рабочих процессов в кластере стало 4 (как и положено). По PID процесс невозможно было отследить, т.к. показывался всего один (рабочий, который тянул всех как мог).

В рестарте агента необходимость отпала. Все пришло в норму.

Какие есть соображения на этот счет? Может кто сталкивался с таким? 

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

См. также

PowerTools от 1 000
Подписаться Добавить вознаграждение

Комментарии

1. DERL (DERL) 27.05.14 09:35
так что же это получается, что даже в версии 8.3 этот глюк не исправили?
сейчас пока на 8.2.13 и периодически (пару раз в месяц) бывает виснет сервер 1С и ни один отчет на СКД не формируется (висит бесконечно значок формирования), в таких случаях я просто перезапускаю кластер серверов (Остановка сервера 1С - Запуск сервера 1С)

Сервер Windows 2008 R2, SQL SERVER 2008 R2
или может это вовсе не глюк 1С?
2. Вячеслав Салин (juker) 27.05.14 13:33
(1) DERL, В том то и дело что Вы весь кластер перезапускаете, а мне надо поднимать кластер без его перезапуска.
Да и кластер не корректно перезапуститься с подвисшим процессом (столкнулся с этим).
А 1С разрабы наверное тут только руками разведут и никак не прокомментирую.
3. Вячеслав Салин (juker) 27.05.14 13:37
(1) DERL, И валится именно один процесс из нескольких (как в статье описал). Это не может быть глюком системы ибо менеджер и рабочие процессы это составляющие единого целого, а не каждый сам по себе со связью многие (рабочий процесс) к одному (менеджер)
4. Антон Стеклов (asved.ru) 28.05.14 04:58
1) В свойствах процесса отображается его PID. Если процесс rphost с неким PID отсутствует в консоли - его надо валить, и нечего за ним смотреть.
2) Включайте ТЖ. Хотя бы минимальный. Возможно, Вам удастся поймать причину. Пример:
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
<dump create="false"/>
<log location="C:\1c\techlog\excp\" history="168">
<event>
<eq property="name" value="excp"/>
</event>
<event>
<eq property="name" value="excpcntx"/>
</event>
<property name="all"/>
</log>
</config>
3) Перед тем, как убивать повисший процесс, сделайте его дамп и отправьте в техподдержку. Не так давно об этом шла речь на партнерском форуме.

В некоторых случаях помогает явное указание loopback-IPv4-адреса хоста для его имени в hosts. Пример:
Имя компьютера: mycomp
запись в hosts: 127.0.0.1 mycomp
Ekovichev; sonGodv; andrey-prog; aexeel; pavlov_dv; juker; +6 Ответить 1
5. Владимир Конырев (Vladimir_Konyrev) 28.05.14 09:56
Сталкивался с такой проблемой, но перезапускал службу на сервере БД, что приводило к отвалу всех. Спасибо за альтернативное решение.
6. Вячеслав Салин (juker) 28.05.14 10:09
(4) asved.ru, В консоли отображались процессы с точностью до наоборот.
1. В консоли один процесс, причем, при получении информации о свойствах процесса возвращает пустоту на форме статистики процесса. Поле PIDa тоже пустое. В консоли отсутствовали те процессы, которые работали.
2. В диспетчере задач 4 (четыре) процесса.
Поэтому и пришлось заниматься наблюдением за повелением процессов в диспетчере задач. А вот за дамп... не знал о возможности/необходимости передачи дампа техподдержке. Если доведется (тьфу-тьфу), обязательно свяжусь с поддержкой.
По поводу петли (127.0.0.1)... В каких конкретно случаях это помогает? Есть пример?

P.S. При явном указании имени сервера на 127.0.0.1 для локальных служб сервера, ничего плохого в этом нет, т.е. хуже не будет. На своем сервере я сделал именно так, после Вашей подсказки. Включил ведение ТЖ. Посмотрим, может это как раз мой случай.

Есть схожая темя http://infostart.ru/public/274466/ но в её случае там все видно, мой случай более тяжелый.
7. Вячеслав Салин (juker) 28.05.14 10:19
(5) Vladimir_Konyrev, Вам очень повезло.
Это второй такой случай у меня и в первом варианте было совсем все плохо.
При рестарте службы, она перешла в состояние "Останавливается" без какой либо интерактивной возможности вмешательства средствами mmc (консоль служб) и все.... стоп процесса rmngr и всех rphost не помог, служба так и висела в состоянии останавливается. В итоге - рестарт сервака (жуть).
Второй раз не хотел наступать на грабли и ... результат Вы читали.
8. Евгений (Evmil) 28.05.14 11:03
Слава википедии, показала, что такое ПКМ - первый раз вижу сокращение в этом контексте, честное слово.
9. Вячеслав Салин (juker) 28.05.14 11:18
10. hopter _ (hopter) 09.10.14 01:39
Поставил 8.3.5.1146
Ситуация обратная - есть зависшие сеансы, а соединений к ним нет.
Причем пока сеанс не удалишь из консоли даже перезагрузка сервера не помогает.
После запуска эти сеансы снова отображаются. Я не в курсе где по ним кэшируется инфа, что даже перезагрузка не помогает.
11. Сергей (necropunk) 24.10.14 13:01
А что мешает обработкой перебрать сеансы или процессы и грохнуть? Как визуально ты определяешь мертв процесс или жив? Перебрать процессы, посмотреть свойство MemorySize 10 мин. не меняется - грохать? Просто сейчас столкнулся с похожим, обработку накатал, перебираю файлы, сеансы, но не знаю как именно определить степень "мертвости" процесса :)
(10) hopter, а это не могут быть регламентные или фоновые какие-нибудь вещи?
12. hopter _ (hopter) 27.10.14 10:07
(11) не могут, т.к. висит сеанс толстого клиента без информации о соединении
а само соединение разорвано пользователем и благополучно закрылось при его штатном выходе из 1с
перед этим стояла 8.3.4.437, таких проблем не было

и похоже не мигрируют сеансы при перезапуске рабочего процесса, пользователю выдается сообщение о принудительном разрыве соединения хостом
пока убрал перезапуск рабочих процессов совсем, посмотрю несколько дней
13. Сергей (necropunk) 27.10.14 10:20
(12) hopter, с миграцией процессов похожий косяк тоже, но если убрать - наблюдал картину подвисания процессов, то ли из спячки не выходят, хрен пойми. Но как факт - процессы висят.
14. DUH Technolover (DJDUH) 27.10.14 10:49
Есть такое, что кильнул, а сессии зависли в SQL и все действия - с 1С-манагером бессмысленны! Только ребут SQL-сервера и браузера!
15. Вячеслав Салин (juker) 27.10.14 21:56
(14) DJDUH, 1с манагер не помогает. Диспетчер задач и PID процесса в руки. Проблема реально решается без перезагрузки 1С сервера и тем паче скуля. А вот с зависшими скульными сессиями постоянно борюсь. Кстати касается не только 1С 8, еще и семерошную сессию скуль не завершает при некорректном выходе пользователя. В этом случае мне в помощь только Activity monitor - ПКМ на сессии, kill и все ).
На серваке, где крутится 20++ баз, за ребут меня просто от...имеют (да простят меня местные админы.). Так что тщательнее подходим к решению таких вопросов. ))
16. DUH Technolover (DJDUH) 28.10.14 11:19
(15) juker, например у меня в скуле в диспетчере процессов завершаю зависшое соединение к базе,,, а в 1С манагере оно висит и не киляется - но, как только ребутаю Службу SQL-server и SQL-brouser - всё очищается!
17. Сергей Жемойтель (djam_arttek) 14.05.15 01:19
на версиях от 8.3.4 до 8.3.6 проблема не только существует но и прекрасно живет.
18. DUH Technolover (DJDUH) 14.05.15 10:25
(17) djam_arttek, скорее всего из-за ограничения пользовательских возможностей на уровне системных грхост процесов, они не имею право что-либо с ними делать.
19. Вячеслав Салин (juker) 14.05.15 10:58
(17) djam_arttek, Проблему решил настройкой ограничений аппетитов процессов по памяти и времени существования процесса. Есть небольшое замедление в работе клиентской части, но отловить его можно только при замере производительности. Пользователю не видно изменений.
В результате зависания и как следствие, тормоза, прекратились.
djam_arttek; +1 Ответить 1
20. Сергей Жемойтель (djam_arttek) 14.05.15 14:10
(18) DJDUH, фоновые задания не имеют каких-либо ограничений, как и пользователи по дефолту имеют полныеправа... Это проблема не прав, а самой платформы.
21. Сергей Жемойтель (djam_arttek) 14.05.15 14:11
(19) juker, можешь подсказать в какую сторону копать?
К примеру проставил время жизни отключенного процесса 600 сек, однако эта настройка не работает.
22. Вячеслав Салин (juker) 15.05.15 10:12
(21) djam_arttek, Когда настраиваешь процесс, используя параметры, то все поля должны быть заполнены. Я тоже нарвался на этот трабл.
Вот мои настройки:
http://slava.salincorp.com/wp-content/uploads/2015/05/Process_settings.jpg
23. Александр T (AlexAuto) 20.05.15 12:22
(22) juker, С заполненными параметрами не работает, для применения параметров надо перезапускать сервер 1с?
Прикрепленные файлы:
24. Гость 26.05.15 15:32
У меня получается что если пользователь - сначала выключает 1с и потом уже терминал то все норм - а те кто сразу терминал закрывают вот только они и остаются подвешенными. - может кто подскажет как с таким бороться?
25. Вячеслав Салин (juker) 26.05.15 18:56
(23) AlexAuto, Сорри за поздний ответ, который наверняка уже не актуален :)
Да, конечно, службу следует рестартануть.
26. Евгений Ларионов (Ujine1313) 23.07.15 10:48
у меня то же появились фантомные соединения. Но фишка в том что процесс висит в консоли 1С а вот в диспетчере задач винды его нету. и как удалить его не понятно(
27. Олег NoName (ArchanGelosZP) 18.12.15 16:23
(26) Ujine1313, Такая же ситуация, Рабочих процессов больше чем rphost ов
Часть рабочих процессов в поле "Включен" стоит "Нет"
и как убрать эти процессы непонятно
28. Олег NoName (ArchanGelosZP) 18.12.15 16:25
скрин
Прикрепленные файлы:
29. Олег NoName (ArchanGelosZP) 18.12.15 17:05
пока решил из*бистым методом
- отсоединяю базу в скл
- удаляю базу на 1с сервере
- переименовываю файл и базу в скл
- создаю новую базу на 1с сервере
30. Владислав Игнатенко (fuser) 10.03.16 11:30
платформа 8.3.6.2449 (x64) - проблема такая же
31. Александр (gralex) 30.03.16 12:04
(29) ArchanGelosZP, Спасибо, помогло на 8.3.6.2449, правда админы поленились переименовывать базу в скл, заработало и так, после создания новой базы на 1с-сервере.
32. Дмитрий Конаков (dkonakov) 31.03.16 19:48
с недавних пор тоже самое началось, хоть толком ничего не менялось, добавились 2 новых юзера в УТ 10.3, платформа 8.3.6.2449
33. Mike Letto (MikeLetto) 14.07.16 09:46
Для отрубания сеансов в SQL может быть полезно:

Отключение сеанса с перводом в offline. Offline можно не использовать.

DECLARE @DatabaseName nvarchar(50)
SET @DatabaseName = N'MyBaseName'

DECLARE @SQL varchar(max)
SET @SQL = ''

sel ect @SQL = @SQL + 'Kill ' + Convert(varchar, spid) + ';'
fr om master.dbo.sysprocesses
where dbid = DB_ID(@DatabaseName)
--where spid in (select blocked fr om master.dbo.sysprocesses wh ere blocked <> 0) and blocked = 0
exec(@SQL)
print @SQL

set @SQL = 'USE master 
ALT ER   DATABASE '+@DatabaseName+'
SET OFFLINE WITH ROLLBACK IMMEDIATE'
exec(@SQL)
--print @SQL
...Показать Скрыть
34. Вячеслав Салин (juker) 14.07.16 14:36
(28) ArchanGelosZP, В версии ядра 8.2 существует возможность удалить/добавить рабочий процесс вручную.
Используйте для этого ветку "Рабочие серверы" - "ИмяСервера" - "Рабочие процессы".
В меню по ПКМ на "РАбочие процессы" можно создать процесс, а на самом процессе его можно удалить..
35. Вячеслав Салин (juker) 14.07.16 14:55
(33) MikeLetto, Офлайнить базу - грубо и бессмысленно, если там 50+ пользователей и зависшие сеансы не мешают работе. Кстати, перевод базы в офф автоматом киляет все подключения к ней (при установке флага), там все отвалятся :)
Помимо этого существуют контекстные блокировки (одна запись в таблице для SQL или один объект для 1С), когда открыт, например, элемент справочника номенклатуры и это нормальная работа подключения к SQL. В Вашем скрипте идет анализ количество блокировок не равное 0, что в корне неправильно. Поэтому автоматизировать убивание подключений у которых есть открытые блокировки в корне неправильно. Для этого существует и используется мной два инструмента, консоль управления 1С и SQLMS + Монитор активности. Причем указал в какой последовательности я использую эти инструменты.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа