Windows Sockets — 10054(0×00002746)

Лечим 54ю ошибку в 1С

 

 Описание ошибки

server_addr=tcp://<имясервера>:1562 descr=Ошибка сетевего доступа к серверу (Windows Sockets — 10054(0×00002746). Удаленный хост принудительно разорвал существующее подключение.) line=1031 file=.\src\DataExchangeTcpClientImpl.cpp

Как бороться с этой проблемой

Настроить Технологический журнал и разобрать его логи.
Наиболее частыми причинами бывают падения серверной части 1С:Предприятия.
В также можно убедиться, посмотрев — ане создаются ли дампы (смотреть путь logcfg.xml, если настройка dump-ов в нем отсутствует, то в каталоге %USERPROFILE%\Local Settings\Application Data\1C\1Cv81\Dumps, например C:\Documents and Settings\<Имя пользователя>\Local Settings\Application Data\1C\1Cv81\dumps. Падения платформы чаще всего могут возникать из-за запросов с нестандартными параметрами. Дампы отсылайте в техподдержку 1С email:v8@1c.ru.
1. Чаще всего мне встречалась проблема в журнале документов в отборах запросы были похожи на этот:

SELECT ALLOWED TOP 35 R.Date_Time A1,
R.Number A2,
R.Fld9608 A3,
R.Fld9613 A4,
R.Fld9606 A5,
R.Fld9610 A6,
R.Fld9611 A7,
R.Fld9607 A8,
R.Fld9612 A9,
R.Fld9615 A10,
R.Fld9614 A11,
R.Fld9609 A12,
R.Fld9605 A13,
R.Document A14,
R.Marked A15,
R.Posted A16,CAST(R.Fld9608 AS REF(Reference9)).Description
A17,CAST(R.Fld9606 AS REF(Reference52)).Description A18,CAST(R.Fld9611
AS REF(Reference93)).Description A19, CASE WHEN R.Fld9609 REFS
Reference53 THEN CAST(R.Fld9609 AS REF(Reference53)).Description WHEN
R.Fld9609 REFS Reference150 THEN CAST(R.Fld9609 AS
REF(Reference150)).Description WHEN R.Fld9609 REFS Reference63 THEN
CAST(R.Fld9609 AS REF(Reference63)).Description WHEN R.Fld9609 REFS
Reference114 THEN CAST(R.Fld9609 AS REF(Reference114)).Description END
A20,CAST(R.Fld9605 AS REF(Reference79)).Description A21
FROM DocumentJournal9604 R WHERE
((R.Fld9605=79:b63e000bcd6ad80811da7cf12c684266)) AND
(R.Date_Time > DATETIME(2006,12,31,12,0,0) OR (R.Date_Time =
DATETIME(2006,12,31,12,0,0) AND (R.Document >=
343:b654000bcd6ad80811dba49c7aabe269)))
ORDER BY A1 ASC, A14 ASC’

2. Пример лога ТЖ, показывающее причину падений сервера при обновлении полнотекстового поиска
11:40.9690-0,EXCP,1,process=rphost,p:processName=<база данных>,t:clientID=3, t:applicationName=BackgroundJob,t:connectID=27,Usr=DefUser,DumpFile=C:\Program Files (x86)\1cv81\dumps\rphost_8.1.13.41_7d4e2366_20090609021136_10236.mdmp,Context=’
ОбщийМодуль.МодульРегламентныхЗаданий : 46 : ПолнотекстовыйПоиск.ОбновитьИндекс(Ложь, Истина);’

Итоговым решением в этом примере будет отключить фоновый процес в проблемной базе. Дождаться нового релиза платформы и обновиться.
Более подробно про падения платформы смотрите в моем блоге.
3. Пример ТЖ для циклический перезапуск процессов. Для анализа этого события на компьютере сервера 1С:Предприятия необходимо включить запись в технологический журнал событий PROC (пример файла logcfg.xml).
Когда процесс выключается, будет выведено событие PROC со свойством Txt=Process become disable.
Когда процесс останавливается, будет выведено событие PROC со свойством Txt=Process terminated. Any clients finished with error. Если аварийные завершения работы пользователей совпадают по времени с выводом этого события, то причиной является принудительная остановка рабочего процесса либо администратором (через консоль кластера), либо вследствие автоматического перезапуска.
4. Убедиться, что причиной являются/не являются действия администратора в консоли

—————————-

Ниже представлен вариант решения коллегой.

Всем заинтересованным в решении проблем с падением платформы с ошибками:

10051, 10053, 10054, 10064

 

Как показал разбор полетов по падениям платформы, с выше указанными ошибками:

- Большинство падений вызвано именно работой фоновых заданий, как и предполагалось в топике.

- Не хваткой дискового пространства

- Наличием большого числа не завершенных транзакций в журнале 1С

* * *

- Прежде чем заниматься разбором с технологическим журналом, проанализируйте используемые в конфигурации фоновые задания и отключите те, которые не требуются Вам для работы, конфигурации (банально, анализ 14 ГБ мусора можно считать времяпрепровождением, если Вам нечем заняться… :))) )

- Проанализируйте и внесите исправления в дописанные Вами фоновые задания, убедитесь в том, что они завершаются с нормальным кодом завершения (без ошибок и не закрытых транзакций)

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

- Проанализируйте и ИСПРАВЬТЕ ПРОБЛЕМЫ ФУНКЦИОНИРОВАНИЯ типовых фоновых заданий конфигурации

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

- Проанализируйте объем используемого пространства сервером SQL, вероятно что серверу банально нехватает памяти

- Проверьте политки настройки Active Directory

- И также сожмите/очистите журнал транзакций SQL вот примерно таким кодом (для SQL 2000):

 

Вариант 1:DBCC SHRINKFILE(pubs_log, 2)
(Если нужный размер не достигнут попробуйте вариант 2)Вариант 2:BACKUP LOG pubs WITH TRUNCATE_ONLY
DBCC SHRINKFILE(pubs_log,2) 

Где pub_log — имя Вашей базы данных

Вариант 3:
sp_detach_db — отключим с данной процедурой базу, а sp_attach_db — подключим снова. Журнал транзакций при этом очистится.
(ПОдробнее можно прочесть в разделах MSDN Q256650 (для SQL 7.0) и Q272318 (для SQL 2000).)

Вариант 4: (Для 7.0)
DBCC SHRINKFILE (file_name, target_size)
DBCC SHRINKDATABASE (database_name, target_percent)
BACKUP LOG database_name WITH TRUNCATE_ONLY

 

Если после этих операций падения продолжаются, тогда продолжайте следовать рекомендациям:

 

- Пробуйте внести изменения в файлы HOSTS операционной системы (вероятнее всего будет достаточно прописать ассоцирование только в файлы на одной/двух машинах, где падения происходят наиболее часто)

- Пробуйте разнести сервера 1С предприятия и SQL, если они у Вас на одной машине.

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

- Проверьте время отклика сервера (вероятнее всего, что все будет в пределах нормы, а редкие провалы во времени обслуживания, не могут столь сильно влиять на работу сервера предприятия)

- Проверьте работу маршрутизаторов в сети (Редко, но бывает, что именно их перенастройка влияет на количество падений)

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

- Проверьте уровни сигналов у потребителей/конечных компьютеров (может быть банально, низкий уровень сигналов, постоянные повторные запросы блоков, задержка очереди на обслуживание в сети, а следовательно в конце концов получение сообщения, что конечный серевер разорвал соединение, когда количество попыток превысит время ожидания поступления сигнала. Если хотите разобраться в данном вопросе обратитесь к протоколу работы Ethernet/CSMA CD/CSMA. Количество попыток в передаче пакета по данному протоколу не бесконечно… ))) Да и буфер в картах тоже не беспределен.)

- Добавьте памяти на сервера

- Переведите часть/всех пользователей в терминальный режим (Т.е. обеспечьте то, что МНОГИЕ пользователи определеяют как ТОНКОГО КЛИЕНТА 1C). В качестве такого сервера я бы рекомендовал Citrix Metaframe или Terminal Server MS

 

Вероятнее всего, когда Вы выполните указанные рекомендации, за исключением разбора проблем с железом, стабильность работы возрастет настолько что падения платформы станут очень редкими, что перекроют технологические промежутки по обслуживанию базы данных, выполнять которые всеже НЕОБХОДИМО и не думайте, что те рекомендации что указаны выше Панацея от всех проблем.

Они решат многие, но не все проблемы.

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

(С) Шарафан Александр (AXELOT, Москва)

———————————

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

3. Если у Вас 32х разрядна версия сервера 1С, то пора купить 1С:Предприятие 8.2. Лицензию на сервер (x86-64).

Исследуйте роли «Пользователя», если они есть в типовой конфигурации конечно, и в частности, после того как вычислите проблемныйдокумент с помощью ТЖ, нужно найти проблемную роль (кто жалуется).
Далее для роли Пользователя смотрим РЛС документа, если дополнительных настроек нет (чисто), то правой кнопкой на нем — поиск ссылок на объект, и последовательно просматриваем РЛС для роли «Пользователь» для каждого объекта.

Ошибочное принятие высокой интенсивности пользователей за атаку на протокол в некоторых случаях Windows.
>Запустить программу regedit.exe, добавь новое значение типа DWORD с именем SynAttackProtect в раздел реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\ и присвой ему значение 00000000
Имеет смысл делать для ОС Windows 2003 SP1 (http://msdn.microsoft.com/ru-ru/library/ms189083.aspx).

p.s. Кроме того, 54 ошибку можно получить на релизах <= 8.1.12.98 при ри конвертации конвертором ИБ 77(DBF) -> 81(SQL) в типовой ТиС (демо, взятой с ИТС) релиз. 954 в клиент-серверном варианте.
обойти можно так:
- выполните конвертацию в файловый фариант информационной базы 1С:Предприятия 8.1,
- выгрузите полученную информационную базу в файл,
- загрузите в клиент-серверный вариант информационной базы 1С:Предприятия 8.1.

Собрать логи ТЖ можно файлом logcfg.xml.

 

1С ошибка 10054 на Debian Squeeze

Ошибка Возникала при обмене УТ10 с БП2 и при других интенсивных операциях чтения/записи в БД.

Симптомы: серверные процессы 1С не падают, у клиента полностью теряется связь с сервером на 5 сек.
Сервер 1С и БД на одной машине под управлением Debian Squeeze.
Решение проблемы: установка параметра ядра tcp_syncookies в значение 0.
Код:
root@machine:~# echo «net.ipv4.tcp_syncookies = 0″ >> /etc/sysctl.conf && sysctl -p
(автор Вадим Ивахин)

 

 

 

Windows Sockets — 10054(0×00002746): 2 комментария

  1. Ошибка 1С 10054. В моем случае ошибка была вызвана проблемой в MS SQL. По выбору установка MS SQL может предлагать Windows-аутентификацию и смешанную аутентификацию. У меня стояла только Windows-аутентификация. При попытке создания инфобазы указывался встроенный клиент, из-за чего база не регистрировалась с ошибкой в логе «Login failed for user ‘USER’. Reason: An attempt to login using SQL authentication failed. Server is configured for Windows authentication only. [CLIENT: 127.0.0.1]«. Нужно переделать под смешанную аутентификацию или указать пользователя домена/системы.

  2. Ошибка 1С 10054. В моем случае ошибка была вызвана проблемой в MS SQL. По выбору установка MS SQL может предлагать Windows-аутентификацию и смешанную аутентификацию. У меня стояла только Windows-аутентификация. При попытке создания инфобазы указывался встроенный клиент, из-за чего база не регистрировалась с ошибкой в логе «Login failed for user ‘USER’. Reason: An attempt to login using SQL authentication failed. Server is configured for Windows authentication only. [CLIENT: 127.0.0.1]«. Нужно переделать под смешанную аутентификацию или указать пользователя домена/системы.

Комментарии запрещены.