我们有一个相当标准的客户端/服务器应用程序使用MS RPC构build。 客户端和服务器都是用C ++实现的。 客户端build立到服务器的会话,然后在一段时间内重复调用它,最后closures会话。
然而,定期地,特别是在负载很重的情况下,我们看到一个RPCexception出现在代码1754中: RPC_S_NOTHING_TO_EXPORT
。
看来,这发生在一个会议的中间。 用户login了一段时间,成功的调用,然后其中一个电话莫名其妙地返回此错误。 据我们所知,服务器没有收到任何迹象表明任何事情都出错了 – 它肯定不会看到客户所做的调用。
错误代码似乎也具有永久性影响。 让客户端重试连接也不起作用。 但是,如果用户在同一客户端和服务器之间同时有多个用户会话活动,则其他连接不受影响。
本质上,我有两个问题:
有谁知道RPC_S_NOTHING_TO_EXPORT
是什么意思? MSDN文档简单地说: "No interfaces have been exported."
…呃? 该会议正常工作的许多相同的调用实例,直到这一点… …
有没有人有任何想法如何确定真正的问题? 注意 :捕获networkingstream量是我们宁愿避免的,如果可能的话,因为问题是零星的,我们可能会经历数千兆字节的stream量才会发生。
捕获网络流量将是解决这个问题的最好方法之一。 如果你不能这样做,你可以转储客户端进程和WinDBG或Visual Studio调试? 也许比较正常运行时的转储与错误状态?