Почему тонкий клиент 1С зависает и вылетает при добавлении больших файлов через веб-сервер?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Анализ причин возникновения проблемы

В большинстве случаев проблема кроется не в самой платформе 1С:Предприятие, а в ограничениях конфигурации самого веб-сервера. Когда вы загружаете файл через тонкий клиент, 1С передает данные по протоколу HTTP. Веб-сервер Apache по умолчанию имеет жесткие лимиты на размер тела запроса (POST-запроса), через который передается содержимое файла. Если размер вашего файла превышает установленный лимит, сервер просто сбрасывает соединение, что и приводит к вылету клиента.

Мы выделили основные факторы, которые необходимо проверить:

  1. Ограничение LimitRequestBody: Это самый частый виновник. В стандартной конфигурации Apache может быть установлено ограничение в 2 Мб.
  2. Таймауты сервера (Timeout): Если файл передается медленно из-за особенностей сети, сервер может посчитать процесс «зависшим» и разорвать соединение по истечении времени ожидания.
  3. Настройки PHP (если используется): Если в составе веб-сервера задействованы модули PHP, параметры upload_max_filesize и post_max_size могут ограничивать передачу данных.
  4. Права доступа к временным каталогам: Служба, от имени которой запущен Apache, должна иметь полные права на запись в папку временных файлов системы.

Шаг 1: Настройка директивы LimitRequestBody в Apache

Первым делом нам необходимо увеличить лимит на размер тела запроса. Для этого откройте конфигурационный файл httpd.conf вашего веб-сервера Apache.

Найдите директиву LimitRequestBody. Если её нет, вы можете добавить её самостоятельно. Значение задается в байтах. Чтобы полностью снять ограничение, установите значение 0, однако в целях безопасности лучше ограничить его разумным пределом, например, 100 Мб:


# Установка лимита в 100 Мб
LimitRequestBody 104857600

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

Шаг 2: Увеличение таймаута ожидания

Если после увеличения лимита ошибка всё еще возникает, возможно, процесс передачи файла занимает больше времени, чем разрешено настройками сервера. Найдите параметр Timeout в том же файле httpd.conf.

По умолчанию он может быть равен 60 секундам. Увеличьте это значение, например, до 300 секунд (5 минут), чтобы дать серверу достаточно времени для обработки «тяжелых» файлов:

Timeout 300

Шаг 3: Проверка места хранения файлов

Важно понимать, где именно в 1С хранятся ваши файлы. Существует два основных способа: в информационной базе (внутри БД) и во внешнем хранилище (на диске сервера). Если файлы хранятся во внешних томах, проверьте следующие моменты:

Шаг 4: Анализ журналов событий

Если проблема сохраняется, не гадайте — загляните в логи. Это самый верный способ узнать причину. В каталоге установки Apache есть папка logs, а в ней файл error.log. Именно там будут записаны ошибки вида request body exceeds ... или ошибки, связанные с таймаутом. Изучив этот файл сразу после вылета клиента, вы точно увидите, на каком этапе происходит разрыв соединения.

Мы рекомендуем при настройке веб-сервера под 1С всегда отдавать предпочтение актуальным версиям Apache (например, 2.4 и выше), так как они лучше оптимизированы для обработки потоковых данных и работы с большими объектами через протоколы 1С.

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

← На главную