Служба назначения: 504 Тайм-аут шлюза - свойство тайм-аута не разрешается

При определении тайм-аута в моем пункте назначения CF кажется, что мое свойство тайм-аута полностью игнорируется. Пункт назначения определяется в экземпляре службы назначения и привязан к моему модулю approuter + srv.

Свойства назначения

При вызове моей службы запрос всегда завершается ошибкой после 30 секунд (по умолчанию) с таймаутом шлюза 504, хотя я даю тайм-аут 300 000 мс через свойства пункта назначения. Я также попытался добиться того же, указав тайм-аут в mta.yaml, но пока безуспешно ...

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

Есть идеи, что не так?


person RNLS0176    schedule 23.04.2020    source источник
comment
Не могли бы вы поделиться с нами, из какой документации вы обнаружили, что этот параметр должен на что-то влиять?   -  person Emdee    schedule 27.04.2020
comment
help.sap.com/viewer/65de2977205c403bbc107264b8eccf4b/Cloud/   -  person RNLS0176    schedule 27.04.2020


Ответы (2)


Я никогда не видел поддержки целевого ресурса "timeout". Интересно, какая библиотека читает и действует в этой области. По крайней мере, не SAP Cloud SDK.

Конечно, есть способы настроить ограничение 30s по умолчанию для экземпляров Apache HttpClient. Но я полагаю, что это не решает главной проблемы. По какой причине запрос занимает больше времени, чем 30s? Считаю такую ​​задержку малоприемлемой.

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

person Alexander Dümont    schedule 23.04.2020
comment
Я нашел свойство тайм-аута - person RNLS0176; 23.04.2020
comment
Я пытаюсь объединить источник данных HANA с источником данных CRM в представлении CDS через CAP. Итак, я прочитал все записи своей базы данных (в настоящее время 74 записи) и подключаюсь к этому с помощью @AfterQuery, чтобы получить дополнительную информацию для этих записей из бэкэнда CRM, что приводит к 74 дополнительным запросам, которые занимают более 30 секунд ... - person RNLS0176; 23.04.2020
comment
74 дополнительных запроса как в отдельных запросах к месту назначения? Если да, то SAP Cloud SDK здесь не поможет, потому что тайм-аут происходит либо на уровне прокси-сервера SCP (например, approuter), либо на стороне пользователя (например, браузер / почтальон ). Я предполагаю, что некоторые из этих запросов не зависят от фактического запроса пользователя и могут быть выполнены заранее. Вы можете работать с асинхронными запросами и кешированием результата в течение x минут. Кэширование данных в памяти приложения дешевле, чем ожидание завершения 74 запросов на запрос. - person Alexander Dümont; 24.04.2020

К сожалению, это не обрабатывается SDK. Вы можете попробовать это:

cf set-env INCOMING_CONNECTION_TIMEOUT 3600000 Вы также можете проверить этот ответ: https://answers.sap.com/questions/12937267/cloud-foundry-application-router-http-502-after-2.html

Облачный SDK, скорее всего, не имеет к этому никакого отношения, поскольку таймаут исходит от какого-то сервера даже за маршрутизатором приложений. Вы можете попробовать с помощью POSTMAN или другого инструмента API, чтобы увидеть, есть ли у вас такая же проблема.

Если полезная нагрузка слишком велика или сервер закрывает соединение из-за ошибки, вам придется использовать разбиение на страницы с top/skip или найти, где последовательность запроса не выполняется и почему.

person Artyom Kovalyov    schedule 23.04.2020
comment
cf set-env INCOMING_CONNECTION_TIMEOUT 3600000 не помогло, проблема сохраняется в почтальоне - person RNLS0176; 23.04.2020
comment
Если Postman выйдет из строя, SDK тоже не поможет. Обычно это не инструмент для настройки экземпляров Cloud Foundry. Если вашей службе CAP требуется слишком много времени для возврата ответа, вам необходимо либо оптимизировать ее производительность, либо обратиться в службу поддержки CF, чтобы правильно настроить все тайм-ауты в конвейере запросов, чтобы они соответствовали максимальному времени ответа. - person Artyom Kovalyov; 24.04.2020