我们有一个使用MS RPC构建的相当标准的客户端/服务器应用程序。客户端和服务器都是用C ++实现的。客户端建立与服务器的会话,然后在最后关闭会话之前的一段时间内重复调用它。
但是,特别是在负载较重的情况下,我们会定期看到RPC异常显示代码为1754:RPC_S_NOTHING_TO_EXPORT
。
这似乎发生在会话中间。用户登录一段时间,成功调用,然后其中一个调用莫名其妙地返回此错误。据我们所知,服务器没有收到任何出错的迹象 - 它肯定没有看到客户端的调用。
错误代码似乎也具有永久含义。让客户端重试连接也不起作用。但是,如果用户在同一客户端和服务器之间同时激活多个用户会话,则其他连接不受影响。
实质上,我有两个问题:
有谁知道RPC_S_NOTHING_TO_EXPORT
的含义是什么? MSDN文档只是说:"No interfaces have been exported."
......嗯?在此之前,会话对于同一次调用的多个实例工作正常......
有没有人对如何识别真正的问题有任何想法? 注意:如果可能的话,捕获网络流量是我们宁愿避免的,因为问题是零星的,我们可能会在遇到事件之前经历数千兆字节的流量。
答案 0 :(得分:1)
捕获网络流量将是解决此问题的最佳方法之一。如果你不能这样做,你可以转储客户端进程并使用WinDBG或Visual Studio进行调试吗?也许比较正常运行时的转储与错误状态下的转储?