我遇到了SAP .NET Connector
的问题我构建了一个Web应用程序(ASP.NET,C#),它连接到SAP BAPI过程以从SAP数据库中获取结果。
我已将其连接到SAP BAPI程序,它还会获取Web应用程序的结果。
我的问题是,在第一次尝试期间,获取结果需要25到30秒,但从第二次尝试开始,结果将立即获取。
我不确切知道为什么第一次尝试取得结果需要这么长时间。
有人可以帮我吗?
答案 0 :(得分:0)
我也看到了这种延迟,这肯定是我们使用连接器建立与SAP的连接,而不是与SQL有关。
我正在推理它是因为在第一次尝试时连接器必须建立连接,验证并初始化它自己的连接池。
当然,这取决于您的SAP盒子的加载方式以及它相对于您的Web服务器的位置,但似乎没有任何方法可以完全解决这个问题。
您最好的做法是进行一次连接,然后尽可能多地重复使用。
答案 1 :(得分:0)
这是常见的行为,实际上是由SAP NCo第一次检索BAPI的元数据引起的。
一旦检索到元数据,它就会将其缓存以用于后续调用,这应该很快。
我经常看到BAPI_PO_CREATE1的第一次通话时间约为10秒,后续通话时间约为1秒。
答案 2 :(得分: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答案也失败。 由于网关似乎在缓存否定命中,因此以下请求的速度更快,但是一旦条目超时,您就会再次遇到延迟。
因此:
或(更糟糕的是,无论如何应该设置反向查找区域)