Таймауты при работе с внешними ресурсами (TimeoutsInExternalResources)¶
| Тип | Поддерживаются языки  | 
Важность | Включена по умолчанию  | 
Время на исправление (мин)  | 
Теги | 
|---|---|---|---|---|---|
Ошибка | 
BSLOS | 
Критичный | 
Да | 
5 | 
unpredictablestandard | 
Параметры¶
| Имя | Тип | Описание | Значение по умолчанию  | 
|---|---|---|---|
analyzeInternetMailProfileZeroTimeout | 
Булево | 
Анализировать таймаут у "ИнтернетПочтовыйПрофиль" | 
true | 
Описание диагностики¶
При работе с внешними ресурсами с помощью объектов WSОпределения, WSПрокси, HTTPСоединение, FTPСоединение следует задавать таймаут – предельное время ожидания выполнения операции. В противном случае, в результате бесконечного ожидания программа зависнет или часть функционала программы станет недоступна.
Для ИнтернетПочтовыйПрофиль платформа устанавливает значение таймаута по умолчанию в 30 секунд, но, несмотря на это, стоит явно указывать значение таймаута при использовании.
Установка таймаута является защитой от целого ряда внешних факторов:
- нестабильного подключения к Интернету, когда регулярно происходит прерывание связи, и система не может получить цельный ответ сервера, к которому выполняется подключение;
 - при включенных антивирусных программах или при неправильных настройках брандмауэра;
 - неправильной настройки прокси-сервера;
 - ненадежной работы веб-сервера из-за возросшей нагрузки или некорректной работы скриптов.
 
Примеры¶
Неправильно:
HTTPСоединение = Новый HTTPСоединение("zabbix.localhost", 80);
или
FTPСоединение = Новый FTPСоединение(Сервер, Порт, Пользователь, Пароль, Прокси, ПассивныйРежим);
Правильно:
HTTPСоединение = Новый HTTPСоединение("zabbix.localhost", 80,,,, 1);
или
ТаймаутСоединения = 180;
HTTPСоединение = Новый HTTPСоединение("zabbix.localhost", 80,,,, ТаймаутСоединения);
Источники¶
Сниппеты¶
Экранирование кода¶
// BSLLS:TimeoutsInExternalResources-off
// BSLLS:TimeoutsInExternalResources-on
Параметр конфигурационного файла¶
"TimeoutsInExternalResources": {
    "analyzeInternetMailProfileZeroTimeout": true
}