Администрирование · 8 мин
1С: как сделать таймаут — настройка времени ожидания
Как настроить таймаут в 1С: время ожидания сеанса, таймауты веб-сервисов, HTTP-запросов и фоновых заданий. Инструкции, параметры кластера и типичные ошибки.
Таймаут — это максимальное время, которое система ждёт ответа или завершения операции, прежде чем прервать её с ошибкой. В 1С таймауты встречаются на разных уровнях: при обращении к веб-сервисам и HTTP-ресурсам, при работе сеансов на сервере 1С, при выполнении регламентных заданий и при публикации базы на веб-сервере. Ошибки вида «Превышено время ожидания», «Превышен таймаут» или разрыв соединения почти всегда означают, что сработал один из этих лимитов.
Проблема в том, что единой настройки «таймаут для всего» в 1С нет. Чтобы увеличить время ожидания, нужно сначала понять, какое именно соединение или операция обрывается, а затем изменить соответствующий параметр. Ниже разобраны основные сценарии: программный таймаут в коде, настройки кластера серверов, таймауты веб-сервера и фоновых заданий, а также способы диагностики и типичные ошибки.
Таймаут при работе с HTTP и веб-сервисами в коде
Наиболее частая ситуация — обмен данными с внешними системами: загрузка курсов валют, интеграция с сайтом, обращение к API. Здесь таймаут задаётся явно при создании объекта соединения.
Для HTTPСоединение таймаут передаётся параметром конструктора (в секундах). Если параметр не указан, используется значение по умолчанию, которого может не хватить для медленных сервисов или больших файлов:
Соединение = Новый HTTPСоединение("api.example.ru", 443, , , , 120, Новый ЗащищенноеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос("/data/export");
Ответ = Соединение.Получить(Запрос);
В примере выше таймаут установлен в 120 секунд. Аналогично таймаут задаётся для WSПрокси и WSОпределения при работе с веб-сервисами — параметр «Таймаут» также указывается в секундах.
Соединение = Новый HTTPСоединение("server.ru", 443, , , , 300, Новый ЗащищенноеСоединениеOpenSSL); // таймаут 300 секундВажно понимать: таймаут соединения ограничивает ожидание ответа, а не скорость передачи. Если сервер отвечает, но медленно отдаёт данные, увеличение таймаута поможет. Если же удалённый сервер «молчит», увеличение лимита лишь отсрочит ошибку — в этом случае нужно разбираться с самим сервисом.
Настройка таймаутов в кластере серверов 1С
В клиент-серверном варианте работы часть лимитов задаётся в консоли администрирования кластера серверов 1С. Откройте консоль, выберите нужный кластер и проверьте свойства рабочих процессов и информационной базы.
Ключевые параметры, влияющие на обрыв длительных операций:
- Интервал перезапуска рабочих процессов — при срабатывании сеансы пересоздаются, длительные операции могут обрываться;
- Допустимый объем памяти рабочего процесса — при превышении процесс перезапускается, что выглядит как разрыв соединения;
- Выключенные процессы останавливать через — время ожидания завершения процесса;
- Настройки требований назначения функциональности — влияют на то, где выполняются фоновые задания.
- 1Откройте консоль администрирования серверов 1С и подключитесь к нужному кластеру
- 2Перейдите в свойства рабочего процесса и проверьте интервал перезапуска и лимиты памяти
- 3Откройте свойства информационной базы и проверьте блокировку регламентных заданий
- 4Измените параметры, примените изменения и повторите операцию, которая обрывалась
Если длительная операция (например, закрытие месяца или большая выгрузка) стабильно обрывается через одинаковое время, первым делом проверьте интервал перезапуска рабочих процессов — это одна из самых частых причин «таинственных» разрывов.
Таймауты веб-сервера при публикации базы
Если пользователи работают через браузер или тонкий клиент по HTTP, в цепочке появляется веб-сервер — IIS или Apache. У него собственные лимиты времени ожидания, и они могут срабатывать раньше, чем таймауты 1С.
Для IIS проверьте параметры пула приложений и лимиты выполнения CGI/модуля: время простоя пула (Idle Time-out) и время выполнения запроса. Для Apache обратите внимание на директивы Timeout и ProxyTimeout, если используется проксирование.
Признак того, что обрывает именно веб-сервер: ошибка вида 502, 504 или «Gateway Timeout» вместо стандартного сообщения 1С. В этом случае менять настройки кластера бесполезно, пока не скорректированы лимиты веб-сервера.
Таймауты фоновых и регламентных заданий
Длительные операции в 1С принято выносить в фоновые задания, чтобы не блокировать сеанс пользователя. У фоновых заданий есть свои ограничения: время ожидания завершения при вызове ОжидатьЗавершенияВыполнения() (в новых версиях — ОжидатьЗавершение) задаётся параметром в секундах.
Задание = ФоновыеЗадания.Выполнить("Обработки.Выгрузка.ВыполнитьВыгрузку", Параметры);
Результат = Задание.ОжидатьЗавершениеВыполнения(600); // ждём до 10 минут
Если ожидание превышено, возникает исключение, но само фоновое задание при этом продолжает выполняться — его можно найти в консоли заданий и дождаться завершения отдельно. Это важно: таймаут ожидания не отменяет задание.
Как определить, какой таймаут срабатывает
Прежде чем что-то менять, зафиксируйте симптомы: точный текст ошибки, время до обрыва (засеките секундомером), повторяемость и контекст — интерактивная работа, фоновое задание или обмен.
Как выбрать действие
Полезный инструмент диагностики — технологический журнал 1С. Включите сбор событий EXCP и CALL на время воспроизведения ошибки: по длительности вызовов видно, какая операция занимает время и где происходит обрыв. Для серверных баз также проверьте настройки таймаутов на стороне СУБД (MS SQL, PostgreSQL) — длительные запросы могут обрываться и там.
Типичные ошибки при настройке таймаутов
Отдельная ошибка — увеличивать таймауты «с запасом» на порядок. Зависшее соединение с таймаутом в час будет держать ресурсы сервера час. Разумная практика — установить лимит чуть больше реального времени выполнения операции и добавить обработку ошибки с понятным сообщением пользователю.
Часто задаваемые вопросы
В каких единицах задаётся таймаут в 1С?
Во встроенном языке 1С параметры таймаута у HTTPСоединение, WSПрокси и методов ожидания фоновых заданий задаются в секундах. В настройках кластера и веб-сервера единицы могут отличаться — проверяйте подсказки в консоли и документацию веб-сервера.
Можно ли вообще отключить таймаут?
Формально можно задать очень большое значение, но делать это не рекомендуется: зависшие соединения и сеансы будут накапливаться и расходовать память сервера. Лучше установить лимит с небольшим запасом относительно реального времени операции.
Операция обрывается ровно через 20 минут — что это?
Стабильное одинаковое время до обрыва почти всегда указывает на конкретный настроенный лимит. Проверьте интервал перезапуска рабочих процессов кластера, таймауты веб-сервера и настройки СУБД — один из этих параметров, скорее всего, равен наблюдаемому интервалу.
Таймаут фонового задания отменяет его выполнение?
Нет. Превышение времени ожидания в методе ОжидатьЗавершениеВыполнения только вызывает исключение в сеансе, который ждал результат. Само фоновое задание продолжает работать, его состояние можно проверить через менеджер фоновых заданий или консоль заданий.
Где смотреть причину обрыва, если настройки вроде правильные?
Включите технологический журнал на сервере 1С с событиями EXCP и CALL, воспроизведите ошибку и проанализируйте лог. Дополнительно проверьте журналы веб-сервера и СУБД — ошибка с текстом и временем обычно фиксируется на том уровне, где сработал лимит.
Что важно запомнить
Таймаут в 1С настраивается на конкретном уровне: в коде для HTTP и веб-сервисов, в кластере серверов для сеансов и процессов, в веб-сервере для браузерной работы, в фоновых заданиях для ожидания результата. Сначала определите, какое звено обрывает операцию, затем меняйте его лимит с разумным запасом и проверяйте результат на тестовой базе.