Соединитель SAP .NET занимает много времени для получения результатов с первой попытки - PullRequest
2 голосов
/ 15 сентября 2011

У меня проблема с SAP .NET Connector

Я построил веб-приложение (ASP.NET, C #), которое подключается к процедуре SAP BAPI для получения результатов из базы данных SAP.

Я подключил его к процедуре SAP BAPI, и он также извлекает результаты для веб-приложения.

Моя проблема в том, что во время первой попытки получение результатов занимает от 25 до 30 секунд, но со второй попыткиВпоследствии результаты извлекаются без времени.

Я не знаю точно, почему получение результатов с первой попытки занимает так много времени.

Может ли кто-нибудь помочь мне с этим?

Ответы [ 3 ]

0 голосов
/ 12 октября 2012

Это обычное поведение, которое в действительности вызвано тем, что SAP NCo впервые получает метаданные для BAPI.

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

Я регулярно вижу время первого вызова BAPI_PO_CREATE1, равное ~ 10 секунд, последующие вызовы ~ 1 секунда.

0 голосов
/ 03 августа 2018

Прошло много времени с тех пор, как этот был открыт, но его можно решить (даже довольно легко, если вы знаете, что делать).

У нас была та же самая проблема, выше 10 секундзадержка до установления соединения.В транзакции SM21 целевых серверов соединение не было видно, пока клиент не получил ответ.

Я перехватил трассировку сети и увидел, что это действительно шлюз, занимающий время между запросом и ответом.В файле журнала серверов dev_rd (журнал отладки шлюза) появилась (после начальной задержки) довольно очевидная запись:

Fri Aug  3 07:55:20:963 2018
NiHLGetHostName: to get [private-ip] failed in 12004ms (tl=2000ms; MT; UC)
*** ERROR => NiHLGetHostName: NiPGetHostByAddr failed (rc=-1) [nixxhl.cpp   514]

Попытка получить ответ DNS для этого IP также не удалась с помощью инструмента nslookup.Следующие запросы выполняются намного быстрее, поскольку шлюз, по-видимому, кэширует отрицательные попадания, но как только время входа истечет, вы снова почувствуете задержку.

Следовательно:

  1. Настройте свой DNS-сервер (добавьте частные зоны с помощью in-addr.arpa для успешного обратного просмотра ), чтобы шлюзу не приходилось использовать тайм-аут.

или (что еще хуже, поскольку зоны обратного просмотра должны быть настроены в любом случае)

следуйте примечанию 1055602, чтобы окончательно деактивировать обратный поиск с помощью параметра rdisp / reverse_name_lookup.
0 голосов
/ 19 сентября 2012

Я также вижу эту задержку, и именно в этот момент мы используем соединитель для установления соединения с SAP, а не что-либо связанное с SQL.Соединитель должен установить соединение, аутентифицировать и инициализировать свой пул соединений.

Это будет зависеть от того, насколько загружен ваш ящик SAP и где он находится, конечно, относительно вашего веб-сервера, но, похоже, я не нашел полностью никакого способа найти его.

Ваш лучший способ действий - просто один раз установить соединение, а затем максимально использовать его.

...