2

SAP .NET 连接器有问题

我已经构建了一个连接到 SAP BAPI 过程以从 SAP 数据库中获取结果的 Web 应用程序(ASP.NET、C#)。

我已将它连接到 SAP BAPI 程序,它还获取 Web 应用程序的结果。

我的问题是,在第一次尝试期间,获取结果需要 25 到 30 秒,但从第二次尝试开始,结果会立即获取。

我不知道为什么第一次尝试获取结果需要这么长时间。

有人可以帮我吗?

4

3 回答 3

0

这是常见的行为,实际上是由 SAP NCo 第一次检索 BAPI 的元数据引起的。

一旦它检索到元数据,它就会将其缓存以供后续调用,这应该很快。

我经常看到 BAPI_PO_CREATE1 的第一次调用时间约为 10 秒,随后的调用时间约为 1 秒。

于 2012-10-12T12:28:47.960 回答
0

我也看到了这种延迟,而且肯定是在我们使用连接器与 SAP 建立连接而不是与 SQL 建立连接的时候。

我推测这是因为在第一次尝试时连接器必须建立连接、验证并初始化它自己的连接池。

当然,这取决于您的 SAP 盒的负载情况以及它相对于您的 Web 服务器的位置,但我似乎没有找到任何完全解决它的方法。

您最好的做法是建立一次连接,然后尽可能多地重复使用它。

于 2012-09-19T09:36:46.230 回答
0

自从这个打开以来已经很长时间了,但它可以解决(如果你知道该怎么做,它甚至很容易)。

我们遇到了同样的问题,在建立连接之前延迟超过 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]

尝试通过 nslookup 工具获取该 IP 的 DNS 答案也失败了。由于网关似乎缓存了负面命中,因此以下请求要快得多,但是一旦条目超时,您将再次遇到延迟。

所以:

  1. 配置您的 DNS 服务器(使用 in-addr.arpa 添加私有区域以成功进行反向查找),以便网关不必遇到超时。

或者(更糟糕的是,无论如何都应该设置反向查找区域)

  1. 按照 sap note 1055602,通过 rdisp/reverse_name_lookup 参数永久停用反向查找。
于 2018-08-03T07:03:48.650 回答