Операция прервана по таймауту ftp

Операция прервана по таймауту ftp

Область применения: управляемое приложение, обычное приложение.

1. При работе с внешними ресурсами с помощью объектов WSОпределения , WSПрокси , HTTPСоединение , FTPСоединение , ИнтернетПочтовыйПрофиль следует задавать таймаут – предельное время ожидания выполнения операции. В противном случае, в результате бесконечного ожидания программа зависнет или часть функционала программы станет недоступна.

Установка таймаута является защитой от целого ряда внешних факторов:

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

Например, при получении описания веб-сервиса и вызове его операций – если удаленная сторона долго не отвечает (например, выключена, находится на обслуживании или возникли временные неполадки), ожидание ответа может длиться бесконечно. Поэтому если веб-сервис был вызван в результате интерактивных действий пользователя, то внешне будет выглядеть так, что «программа зависла»; а если веб-сервис вызывается из регламентного задания, то связанная с ним часть функционала программы может стать недоступна.

2. В общем виде, время выполнения операции с внешними ресурсами складывается из шести этапов:

  • DNS Lookup — время, потраченное на определение IP адреса по доменному имени (если применимо);
  • Connect — установка соединения с веб-сервером по полученному IP-адресу;
  • Send — отправка данных на веб-сервер;
  • Wait — ждем, пока данные дойдут до веб-сервера и он их обработает;
  • Receive — получение ответа от веб-сервера;
  • Cache Read – получение данных от веб-сервера.

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

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

  • Для быстрых операций (например, проверка доступности сервера) величина таймаута должна выбираться, соответственно, небольшой;
  • В общем случае, не следует выбирать таймаут более 3 минут, чтобы при недоступности удаленной стороны не допустить эффект «зависания» программы;
  • Но если операция выполняется долго из-за этапов Send или Cache Read, т.е. это передача больших объемов данных на веб-сервер или загрузка большого файла с внешнего ресурса, то следует устанавливать большой таймаут, исходя из оценки объема передаваемых данных, но не более 12 часов.

Подобнее о рекомендуемых величинах таймаута для различных операций см. в таблице п. 4.

3. Рекомендации по снижению величин таймаута и повышению отзывчивости программы при работе с внешними ресурсами.

3.1. При разработке веб-сервисов, на операции которых предусмотрен таймаут более 20 секунд (ориентировочно), рекомендуется:

  • предусмотреть в веб-сервисе отдельную контрольную операцию Ping;
  • при работе с этим веб-сервисом, предварительно получать для нее прокси с небольшим таймаутом в 7 секунд и вызывать контрольную операцию Ping;
  • только после этого получать основной прокси.

Пример вызова веб-сервиса.

Неправильно

Реализация модуля веб-сервиса PingPong:

Функция Pong(Знач Параметр)
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = ‘Привет, %1’"), Параметр);
КонецФункции

Функция Ping()
Возврат Истина; // Проверка связи
КонецФункции

Функция Pong(Знач Параметр)
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = ‘Привет, %1’"), Параметр);
КонецФункции

Реализация вызывающей стороны (без использования Библиотеки стандартных подсистем):

// Ждем не более минуты
PingPong = Новый WSПрокси(АдресВебСервиса, , , , , 60);
Результат = PingPong.Pong(НСтр("ru = ‘Мяч’"));

// Ждем не более 3 секунд
PingPong = Новый WSПрокси(АдресВебСервиса, , , , , 3);
PingPong.Ping(); // проверка связи

// Сервис жив, далее работаем с ним и ждем не более минуты
PingPong = Новый WSПрокси(АдресВебСервиса, , , , , 60);
Результат = PingPong.Pong(НСтр("ru = ‘Мяч’"));

Читайте также:  Xerox аппарат находится не в пользовательском режиме

При использовании Библиотеки стандартных подсистем:

  • для работы с веб-сервисами предназначена функция WSПрокси общего модуля ОбщегоНазначения (включает в себя поддержку контрольной операции Ping );
  • для получения данных по протоколам HTTP(S) и FTP(S) – подсистема «Получение файлов через Интернет».

Пример реализации вызывающей стороны с использованием Библиотеки стандартных подсистем:

// Сделать контрольный вызов Ping и ждать не более минуты на дальнейших операциях.
PingPong = ОбщегоНазначения.WSПрокси(АдресВебСервиса. 60, Истина);
// Сервис точно жив, далее работаем с ним.
Результат = PingPong.Pong(НСтр("ru = ‘Мяч’"));

3.2. Для других видов внешних ресурсов (не веб-сервисов) рекомендуется применять аналоги операции Ping . Например:

  • для сервисов, работающих через REST API – это контрольная отправка тестовой команды; в большинстве случаев, если ответ с кодом 200, то сервис работает;
  • для FTP/WebDAV-ресурсов – это контрольная загрузка (отправка) файла-пустышки.

3.3. Веб-сервисы, операции, которых занимают объективно много времени из-за этапа Wait (т.е. долго отрабатывает само веб-приложение), и они не могут быть ускорены (оптимизированы) по объективным причинам, следует переводить на асинхронный режим выполнения:

  • запускать фоновое задание для выполнения подобной «тяжелой» операции,
  • и предусмотреть дополнительные операции по проверке готовности и получению результата.

Пример асинхронного вызова веб-сервиса.

Неправильно

Реализация модуля веб-сервиса Long:

Функция GetData()
Результат = ;
Возврат Результат;
КонецФункции

Функция StartDoLong()
// запуск фонового задания
ИдентификаторОперации = .
// возвращаем идентификатор операции для отслеживания ее готовности
Возврат ИдентификаторОперации;
КонецФункции

Функция IsReady(Знач ИдентификаторОперации)
// проверяем, завершено ли фоновое задание по переданному идентификатору
Готовность = .
Возврат Готовность;
КонецФункции

Функция GetData(Знач ИдентификаторОперации)
Результат = ;
Возврат Результат;
КонецФункции

Реализация вызывающей стороны:

Long = Новый WSПрокси(АдресВебСервиса, , , , , 600); // ждем 1 час

Long = Новый WSПрокси(АдресВебСервиса, , , , , 600); // ждем 1 час

Пока Не Long.IsReady(ИдентификаторОперации) Цикл

КонецЦикла;
Результат = Long.GetData(ИдентификаторОперации);

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

4. Рекомендуемые величины таймаутов для различных операций:

Операция Таймаут (секунд)
Получение описания веб-сервиса 7
Проверка корректности введенного адреса, взаимодействие с менеджером сервиса в модели сервиса и прочие «быстрые» операции 10-20
Получение сведений об одном контрагенте, обмен сообщениями, отправка SMS, удаленное администрирование ИБ в модели сервиса 60-120 1
Передача сообщений обмена данными через веб-сервис или получение файлов из внешнего ресурса до 1 Мб. 120-180 1
Загрузка файлов более 1 Мб Если известен размер файла, то размер в мегабайтах * 128 2 , иначе предельное время загрузки, но не более 43200 3

1 Следует вызывать только после контрольной операции Ping .

2 Загрузка 1 мегабайта данных занимает 128 секунд, при скорости 64 кбит/с, т.к. сотовые операторы в определенных случаях ограничивают скорость загрузки этой величиной.

3 Таймаут продолжительностью 43200(12 часов) сек. является компромиссным решением, т.к. в случае нештатной ситуации процесс «отвиснет» на следующее утро и вернет управление, в отличие от полностью зависнувшей программы при неустановленном таймауте.

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


TUser © ( 2011-07-30 13:01 ) [1]

Читайте также:  Windows l2tp без ipsec

я бы попробовал качать разными браузерами, если проблема есть в любом из них — обратиться в саппорт провайдера, если нет — искать в настройках всякую докачку


PreDatoR ( 2011-07-30 13:37 ) [2]


> TUser ©


> я бы попробовал качать разными браузерами

Спасибо за совет.Попробую другими браузерами воспользоваться.


tesseract © ( 2011-07-30 16:03 ) [3]

Поставить менеджер закачек ?


Styx ( 2011-07-30 16:11 ) [4]

У меня подобные чудеса бывают, когда torrent запущен. Может и вообще без каких-либо ругательств закачку отменить. А закроешь uTorrent — всё хорошо.


Inovet © ( 2011-07-30 16:40 ) [5]

> [3] tesseract © (30.07.11 16:03)
> Поставить менеджер закачек ?

Без него плохо. Я Download Master последнее время пользую.


icelex © ( 2011-07-30 20:44 ) [6]


> PreDatoR (30.07.11 12:50)

вообще-то похоже на троян — канал забивает

Автор: Max Bond
Дата записи

Иногда проще и быстрее передать файл через собственный ftp-сервер, чем закачивать на файлообменник. Ниже рассмотрена процедура установки и настройки ftp-сервера IIS, входящего в состав Windows 7.

Установка FTP-сервера.

FTP-сервер входит в состав служб IIS. Для его установки открываем Панель управления -> Программы -> Включение или отключение компонентов Windows. Раскрываем раздел Службы IIS и ставим галочки напротив следующих компонентов: Служба FTP и Консоль управления IIS.

Установка службы FTP

Настройка FTP-сервера.

Открываем Панель управления -> Система и безопасность -> Администрирование -> Управление компьютером (можно быстрее: меню Пуск -> правый клик на Компьютер -> в меню выбрать пункт Управление). В открывшемся окне раскрываем группу Службы и приложения и открываем Диспетчер служб IIS. В окне Подключения выбираем папку Сайты, затем в правом окне Действия нажимаем на ссылку Добавить FTP-сайт.

Создание FTP-сайта

В мастере создания ftp-сайта указываем его название и расположение (по умолчанию c:inetpubftproot).

Название и расположение сайта

Далее указываем параметры привязки и SSL. Раздел привязка оставляю без изменений. Опцию “Запускать ftp-сайт автоматически” отключаю (ftp мне нужен только время от времени). В разделе SSL выставляю опцию “Без SSL”.

Параметры привязки и SSL

В следующем окне оставляем все без изменений и нажимаем Готово.

Сведения о проверке подлинности и авторизация

Сайт создан. Теперь можно перейти к дополнительным параметрам для тонкой настройки (например ограничить максимальное количество одновременных подключений). Выделите только что созданный сайт, справа в панели Действия нажмите на Дополнительные параметры.

Дополнительные параметры

Следующий этап – настройка брандмауэра Windows. Откройте Панель управления -> Система и безопасность -> Брандмауэр Windows -> Дополнительные параметры. В разделе “Правила для входящих подключений” находим и активируем “FTP-сервер (входящий трафик)” и “FTP Server Passive (FTP Passive Traffic-In)”. Последнее правило позволяет подключаться ftp-клиенту в пассивном режиме.

Открываем порт 21 (входящий) Открываем порты 1023-65535 (пассивный режим)

В разделе “Правила для исходящего подключения” находим и активируем “FTP Server (FTP Traffic-Out)”.

Открываем порт 20 (исходящий)

Если в системе установлен дополнительный брандмауэр (Comodo, Outpost и т.п.), то в нем также необходимо открыть порт 21 (TCP) для входящих подключений и порт 20 (TCP) для исходящих.

Если подключение к Интернет осуществляется с помощью маршрутизатора, и вы хотите сделать свой сервер доступным интернет-пользователям, тогда необходимо настроить проброс портов на маршрутизаторе. На моем Dlink DI-804HV это выполняется в разделе Virtual Server.

Настройка маршрутизатора

192.168.10.4 – ip-адрес ftp-сервера в локальной сети.

Настройка прав пользователей.

Читайте также:  Что значит by перед именем

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

Открываем Панель управления -> Система и безопасность -> Администрирование -> Управление компьютером (Пуск -> правый клик на Компьютер -> в меню выбрать пункт Управление). Далее раскрываем группу Локальные пользователи и группы (данная настройка доступна только в редакциях Бизнес и Максимальная). Правый клик на папке Группы, в меню выбираем Создать группу.

Создание группы пользователей ftp (1)

Вводим название группы – Пользователи FTP, описание (можно не вводить) и нажимаем кнопку Создать.

Создание группы пользователей ftp (2)

Теперь необходимо создать пользователя. Делаем правый клик на папке Пользователи и в меню выбираем Новый пользователь.

Создание пользователя ftp (1)

Вводим имя пользователя (например ftp_user_1), пароль (не менее 6 символов), выставляем галочки напротив опций “Запретить смену пароля пользователем” и “Срок действия пароля не ограничен”.

Создание пользователя ftp (2)

Пользователь создан. Теперь необходимо присвоить ему ранее созданную группу Пользователи ftp. Для этого открываем свойства пользователя и переходим на закладку “Членство в группах”. По умолчанию новому пользователю присваивается группа Пользователи, удаляем ее. Нажимаем кнопку Добавить -> Дополнительно -> Поиск. Откроется список групп пользователей. Выбираем группу Пользователи FTP и нажимаем Ok. В итоге получаем:

Создание пользователя ftp (3)

Нажимаем Ok и переходим к следующему этапу.

На этапе создания ftp-сайта нам было необходимо выбрать рабочий каталог (c:inetpubftproot). Теперь для группы “Пользователи FTP” необходимо настроить права доступа к этому каталогу. Открываем c:inetpub в проводнике, открываем свойства папки ftproot, переходим на закладку Безопасность и нажимаем кнопку Изменить. В открывшемся окне нажимаем кнопку Добавить и выбираем группу “Пользователи FTP” (как при создании пользователя). Устанавливаем уровень прав – “Полный доступ” и нажимаем Ок.

Установка прав доступа к папке ftproot

Последний этап. Вновь открываем Диспетчер служб IIS и выделяем наш ftp-сервер (Test FTP). В панели управления ftp-сайтом выбираем “Правила авторизации FTP”. Добавляем разрешающее правило. В открывшемся окне выбираем опцию “Указанные роли или группы пользователей”. Внизу в текстовом поле руками прописываем название нашей группы (Пользователи FTP), далее ставим галочки в разделе Разрешения напротив Чтение и Запись и нажимаем Ок.

Добавляем правило авторизации FTP

На этом настройка завершена.

В начале мы не выбрали опцию автоматического запуска сервера, поэтому не забываем запустить его вручную (правый клик на названии сайта -> Управление FTP-сайтом -> Пуск).

Как подключиться?

Вариант с использованием проводника Windows.
Открываем Компьютер (Vista, Win 7) или Мой Компьютер (XP).
Для анонимного доступа просто вводим в адресную строку адрес сервера (ftp://192.168.10.4).
Чтобы войти с именем пользователя и паролем вводим адрес вида: ftp://[имя пользователя]:[пароль]@[адрес ftp-сервера]. Например ftp://ftp_user_1:qwerty@192.168.10.4 – для подключения из локальной сети. Для подключения из Интернет локальный адрес заменяем на внешний или на доменное имя.

Как сделать свой ftp-сервер доступным из Интернет?

Если компьютер подключен к Интернет на прямую, то никаких дополнительных действий предпринимать не нужно.

Если компьютер подключен к Интернет через роутер, тогда в панели управления роутера необходимо настроить форвардинг порта TCP 21 (часто это еще называют виртуальным сервером). Настройка форвардинга порта на примере D-link DI-804.

Ссылка на основную публикацию
Номера телефонов мальчиков 12 13
Одиноким девушкам, зачастую, хочется как можно быстрее обрести личное счастье, и нередко эта спешка приводит к большим ошибкам. Как найти...
Не удалось однозначно определить состояние установленной программы
Однажды потребовалось установить антивирус Касперского на множество компьютеров, включая не входящие в местный домен. Но задача оказалась естественно не простой...
Не чувствую зубов после удара
Онемело лицо после удара – значит срочно нужно показаться врачу. После сильного удара появляется синяк, отек. Часто возникает онемение. Если...
Омез де нол трихопол
Гастрит — это заболевание, которое вызвано воспалением слизистой оболочки желудка. Возникает болезнь по разным причинам и протекает по-разному. Врачи обозначают...
Adblock detector